Client and server example
The example in examples/csp_server_client.c
provides a
simple server/client setup, where the client sends a request to the
server and receives a reply. The code can be compiled to an executable
using ./examples/buildall.py
.
The example supports these drivers and interfaces in CSP:
ZMQHUB:
-z <host name|ip>
Requires no extra hardware, as it uses standard network. The
zmqproxy
will need to be started.CAN:
-c <can device>
Requires a physical CAN interface. There are several CAN dongles on the market, for example https://www.peak-system.com/PCAN-USB.199.0.html.
To achieve best performance and stability, following options can be set on the CAN device:
linux: sudo ip link set dev can0 down linux: sudo ip link set dev can0 up type can bitrate 1000000 restart-ms 100 linux: sudo ip link set dev can0 txqueuelen 100
KISS:
-k <serial device>
Requires a serial interface, e.g. USB dongle.
Running the example
If the example is started without any interfaces, it will use the loopback interface for communication between client and server:
libcsp$ ./build/examples/csp_server_client
Initialising CSP
Connection table
[00 0x7fbd8f574080] S:0, 0 -> 0, 0 -> 0 (17) fl 0
[01 0x7fbd8f574198] S:0, 0 -> 0, 0 -> 0 (18) fl 0
[02 0x7fbd8f5742b0] S:0, 0 -> 0, 0 -> 0 (19) fl 0
[03 0x7fbd8f5743c8] S:0, 0 -> 0, 0 -> 0 (20) fl 0
[04 0x7fbd8f5744e0] S:0, 0 -> 0, 0 -> 0 (21) fl 0
[05 0x7fbd8f5745f8] S:0, 0 -> 0, 0 -> 0 (22) fl 0
[06 0x7fbd8f574710] S:0, 0 -> 0, 0 -> 0 (23) fl 0
[07 0x7fbd8f574828] S:0, 0 -> 0, 0 -> 0 (24) fl 0
Interfaces
LOOP addr: 0 netmask: 14 dfl: 0
tx: 00000 rx: 00000 txe: 00000 rxe: 00000
drop: 00000 autherr: 00000 frame: 00000
txb: 0 (0B) rxb: 0 (0B)
Client task started
Server task started
Ping address: 0, result 2 [mS]
reboot system request sent to address: 0
Packet received on MY_SERVER_PORT: Hello world A
Running the example with ZMQHUB interface
To run the example with ZMQHUB interfaces, start the zmqproxy
, client and server in three separate processes.
libcsp$ ./build/examples/zmqproxy
Subscriber task listening on tcp://0.0.0.0:6000
Publisher task listening on tcp://0.0.0.0:7000
Capture/logging task listening on tcp://0.0.0.0:6000
Packet: Src 3, Dst 2, Dport 1, Sport 18, Pri 2, Flags 0x00, Size 100
Packet: Src 2, Dst 3, Dport 18, Sport 1, Pri 2, Flags 0x00, Size 100
Packet: Src 3, Dst 2, Dport 4, Sport 19, Pri 2, Flags 0x01, Size 8
Packet: Src 3, Dst 2, Dport 10, Sport 20, Pri 2, Flags 0x00, Size 14
libcsp$ ./build/examples/csp_server -z localhost -a 2
Initialising CSP
Connection table
[00 0x7f266ec1d080] S:0, 0 -> 0, 0 -> 0 (17) fl 0
[01 0x7f266ec1d198] S:0, 0 -> 0, 0 -> 0 (18) fl 0
[02 0x7f266ec1d2b0] S:0, 0 -> 0, 0 -> 0 (19) fl 0
[03 0x7f266ec1d3c8] S:0, 0 -> 0, 0 -> 0 (20) fl 0
[04 0x7f266ec1d4e0] S:0, 0 -> 0, 0 -> 0 (21) fl 0
[05 0x7f266ec1d5f8] S:0, 0 -> 0, 0 -> 0 (22) fl 0
[06 0x7f266ec1d710] S:0, 0 -> 0, 0 -> 0 (23) fl 0
[07 0x7f266ec1d828] S:0, 0 -> 0, 0 -> 0 (24) fl 0
Interfaces
LOOP addr: 0 netmask: 14 dfl: 0
tx: 00000 rx: 00000 txe: 00000 rxe: 00000
drop: 00000 autherr: 00000 frame: 00000
txb: 0 (0B) rxb: 0 (0B)
ZMQHUB addr: 2 netmask: 0 dfl: 1
tx: 00000 rx: 00000 txe: 00000 rxe: 00000
drop: 00000 autherr: 00000 frame: 00000
txb: 0 (0B) rxb: 0 (0B)
Server task started
Packet received on SERVER_PORT: Hello world A
libcsp$ ./build/examples/csp_client -z localhost -a 3 -C 2
Initialising CSP
Connection table
[00 0x7f471efc1080] S:0, 0 -> 0, 0 -> 0 (17) fl 0
[01 0x7f471efc1198] S:0, 0 -> 0, 0 -> 0 (18) fl 0
[02 0x7f471efc12b0] S:0, 0 -> 0, 0 -> 0 (19) fl 0
[03 0x7f471efc13c8] S:0, 0 -> 0, 0 -> 0 (20) fl 0
[04 0x7f471efc14e0] S:0, 0 -> 0, 0 -> 0 (21) fl 0
[05 0x7f471efc15f8] S:0, 0 -> 0, 0 -> 0 (22) fl 0
[06 0x7f471efc1710] S:0, 0 -> 0, 0 -> 0 (23) fl 0
[07 0x7f471efc1828] S:0, 0 -> 0, 0 -> 0 (24) fl 0
Interfaces
LOOP addr: 0 netmask: 14 dfl: 0
tx: 00000 rx: 00000 txe: 00000 rxe: 00000
drop: 00000 autherr: 00000 frame: 00000
txb: 0 (0B) rxb: 0 (0B)
ZMQHUB addr: 3 netmask: 0 dfl: 1
tx: 00000 rx: 00000 txe: 00000 rxe: 00000
drop: 00000 autherr: 00000 frame: 00000
txb: 0 (0B) rxb: 0 (0B)
Client task started
Ping address: 2, result 8 [mS]
reboot system request sent to address: 2