You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Vincent Dupont 1a12a40110 boards/nucleo-f042: initial support 6 years ago
Makefile boards/nucleo-f042: initial support 6 years ago
Makefile.slip gcoap: CLI example 7 years ago gcoap: CLI example 7 years ago gcoap: CLI example 7 years ago
gcoap_cli.c gcoap: CLI example 7 years ago
main.c gcoap: CLI example 7 years ago
slip_params.h gcoap: CLI example 7 years ago

gcoap Example

This application provides command line access to gcoap, a GNRC implementation of CoAP. See the CoAP spec for background, and the Modules>Networking>GNRC>CoAP topic in the source documentation for the structure of the implementation.

We support two setup options for this example:

Native networking

Build with the standard Makefile. Follow the setup instructions for the gnrc_networking example.

SLIP-based border router

Build with Makefile.slip. Follow the setup instructions in, which are based on the SLIP instructions for the gnrc_border_router example. We also plan to provide or reference the ethos/UHCP instructions, but we don't have it working yet.

Current Status

gcoap includes server and client capability. Available features include:

  • Server and Client provide helper functions for writing the response/request. See the CoAP topic in the source documentation for details. See the gcoap example for sample implementations.
  • Server allows an application to register a 'listener', which includes an array of endpoint paths and function callbacks used to write a response.
  • Server listens on a port at startup; defaults to 5683.
  • Client operates asynchronously; sends request and then handles response in a user provided callback. Also executes callback on timeout.
  • Client generates token; length defined at compile time.
  • Message Type: Supports non-confirmable (NON) messaging.
  • Options: Supports Content-Format for response payload.

Example Use

This example uses gcoap as a server on RIOT native. Then we send a request from a libcoap example client on the Linux host.

Verify setup from RIOT terminal

> coap info

Expected response:

CoAP server is listening on port 5683
 CLI requests sent: 0
CoAP open requests: 0

Query from libcoap example client

gcoap does not provide any output to the CoAP terminal when it handles a request. We recommend use of Wireshark to see the request and response. You also can add some debug output in the endpoint function callback.

./coap-client -N -m get -p 5683 coap://[fe80::1843:8eff:fe40:4eaa%tap0]/.well-known/core

Example response:

v:1 t:NON c:GET i:0daa {} [ ]

The response shows the endpoint registered by the gcoap CLI example.

Send query to libcoap example server

Start the libcoap example server with the command below.


Enter the query below in the RIOT CLI.

> coap get fe80::d8b8:65ff:feee:121b 5683 /.well-known/core

CLI output:

gcoap_cli: sending msg ID 743, 75 bytes
> gcoap: response Success, code 2.05, 105 bytes
</>;title="General Info";ct=0,</time>;if="clock";rt="Ticks";title="Internal Clock";ct=0;obs,</async>;ct=0