README.md 4.01 KB

examples/posix_sockets

This application is a showcase for RIOT's POSIX socket support. To keep things simple this application has only one-hop support and no routing capabilities.

Usage

Build, flash and start the application:

export BOARD=your_board
make
make flash
make term

The term make target starts a terminal emulator for your board. It connects to a default port so you can interact with the shell, usually that is /dev/ttyUSB0. If your port is named differently, the PORT=/dev/yourport (not to be confused with the UDP port) variable can be used to override this.

Example output

The shell commands come with online help. Call help to see which commands exist and what they do.

udp send fe80::1 1337 uiaeue 2015-09-22 14:55:30,686 - INFO # > udp send fe80::1 1337 uiaeue 2015-09-22 14:55:30,690 - INFO # Success: send 6 byte to fe80::1:1337

Running the help command on an iotlab-m3:

2015-09-22 14:54:54,442 - INFO # help
2015-09-22 14:54:54,443 - INFO # Command              Description
2015-09-22 14:54:54,444 - INFO # ---------------------------------------
2015-09-22 14:54:54,446 - INFO # udp                  send data over UDP and listen on UDP ports
2015-09-22 14:54:54,447 - INFO # reboot               Reboot the node
2015-09-22 14:54:54,449 - INFO # ps                   Prints information about running threads.
2015-09-22 14:54:54,451 - INFO # mersenne_init        initializes the PRNG
2015-09-22 14:54:54,453 - INFO # mersenne_get         returns 32 bit of pseudo randomness
2015-09-22 14:54:54,454 - INFO # ifconfig             Configure network interfaces
2015-09-22 14:54:54,455 - INFO # txtsnd               Sends a custom string as is over the link layer
2015-09-22 14:54:54,457 - INFO # ncache               manage neighbor cache by hand
2015-09-22 14:54:54,459 - INFO # routers              IPv6 default router list

Running the ps command on an iotlab-m3:

2015-09-22 14:54:57,134 - INFO # > ps
2015-09-22 14:54:57,139 - INFO #    pid | name                 | state    Q | pri | stack ( used) | location
2015-09-22 14:54:57,143 - INFO #      1 | idle                 | pending  Q |  15 |   256 (  136) | 0x200001cc
2015-09-22 14:54:57,157 - INFO #      2 | main                 | pending  Q |   7 |  1536 (  620) | 0x200002cc
2015-09-22 14:54:57,164 - INFO #      3 | 6lo                  | bl rx    _ |   3 |  1024 (  404) | 0x20003ef8
2015-09-22 14:54:57,169 - INFO #      4 | ipv6                 | bl rx    _ |   4 |  1024 (  436) | 0x20001cc0
2015-09-22 14:54:57,172 - INFO #      5 | udp                  | bl rx    _ |   5 |  1024 (  268) | 0x20004660
2015-09-22 14:54:57,177 - INFO #      6 | at86rfxx             | bl rx    _ |   3 |  1024 (  320) | 0x20001888
2015-09-22 14:54:57,183 - INFO #        | SUM                  |            |     |  5888 ( 2184)

Start a UDP server with udp server start <udp_port>:

2015-09-22 14:55:09,563 - INFO # > udp server start 1337
2015-09-22 14:55:09,564 - INFO # Success: started UDP server on port 1337

Send a UDP package with udp send <dst_addr> <dst_port> <data>:

2015-09-22 14:55:30,686 - INFO # > udp send fe80::3432:4833:46d4:9e06 1337 test
2015-09-22 14:55:30,690 - INFO # Success: send 4 byte to [fe80::3432:4833:46d4:9e06]:1337

You can get the IPv6 address of the destination by using the ifconfig command on the receiver:

2015-09-22 14:58:10,394 - INFO # ifconfig
2015-09-22 14:58:10,397 - INFO # Iface  6   HWaddr: 9e:06  Channel: 26  NID: 0x23  TX-Power: 0dBm  State: IDLE CSMA Retries: 4
2015-09-22 14:58:10,399 - INFO #            Long HWaddr: 36:32:48:33:46:d4:9e:06
2015-09-22 14:58:10,400 - INFO #            AUTOACK  CSMA  MTU:1280  6LO  IPHC
2015-09-22 14:58:10,402 - INFO #            Source address length: 8
2015-09-22 14:58:10,404 - INFO #            Link type: wireless
2015-09-22 14:58:10,407 - INFO #            inet6 addr: ff02::1/128  scope: local [multicast]
2015-09-22 14:58:10,415 - INFO #            inet6 addr: fe80::3432:4833:46d4:9e06/64  scope: local
2015-09-22 14:58:10,416 - INFO #