Skip to content
Ken Bannister edited this page Sep 1, 2018 · 92 revisions

gcoap is a native implementation of CoAP for RIOT. It uses nanocoap for base CoAP structs and functionality.

Feature Status

Feature Description
Confirmable message type Partially implemented, including piggybacked ACKs. See #7192 for details and roadmap.
Observe extension Implemented server for non-confirmable message type. Open PR #7548 for confirmable message type.
Generic Option support Allows the user to add options manually using a new nanocoap API. In progress in #9156. See API Options for details.
Block extension Not implemented, but should be able to reuse/build-on nanocoap implementation.

See all open 'gcoap' PRs and Issues. See all CoAP-tagged PRs and Issues.

Learning More

See the online API documentation, and a feature comparison with nanocoap.

See the gcoap command line messaging example, as well as a demonstration data collection app.

Roadmap

See #9309 for combined gcoap and nanocoap roadmap. Below are other features we have in mind.

  • Add memory tuning section to module documentation. gcoap includes a number of compile-time macros that affect memory use.
  • #9310 added behavior to the client to not wait for a response to a non-confirmable request when the user does not specify a response handler. Continue this work with client and server support for RFC 7967, which specifies a No-Response option to ask the server not to send a response to certain requests.
  • #9000 increased gcoap stack size. A significant source of the problem was the size of the coap_pkt_t struct for gcoap, and #9156 reduces that struct size. Once that PR is complete, create a PR to reset stack size.
  • Add DTLS support. See branch and discussion in #9450.

Milestones

Release Description
2018.01 Request retries for piggybacked ACK response (#7337)
2017.07 Server side of the Observe protocol (#6469)
2017.01 Reimplement networking code to use sock rather than GNRC (#6117)
2016.10 GNRC-based gcoap (#5598)