Skip to content
Ken Bannister edited this page Jun 8, 2018 · 16 revisions

We would like to complete basic CoAP functionality for nanocoap and gcoap, including the Observe and Block extensions. This functionality provides a solid foundation on which to build higher level services, like pub-sub. This page proposes a sequence of PRs toward completion.

The CoAP Option functions below bring the nanocoap and gcoap APIs much closer together. In fact the gcoap API will become mostly convenience/sugar on the nanocoap API. See API Options for details.

For a summary of the goals for nanocoap, see the proposed module documentation, which itself will be a PR.

Subject Library PRs Description
coap_pkt_t message build nanocoap #9085 Use a coap_pkt_t when build a message.
Simpler API for options nanocoap #9085 Adds coap_opt_add_...() functions.
Simpler API for options gcoap #9156 Use coap_opt_add_...() functions.
Isolate coap_put_option...() functions nanocoap #8920, ... Use a compile-time macro to deprecate use of buffer-based application-level functions like coap_put_option_ct(). The preferred approach for that function is to use the coap_pkt_t-based coap_opt_add_uint().
Isolate coap_get_option...() functions nanocoap #8920, ... Rename these functions to coap_opt_get...(). Can inline the old functions on top of the new ones. However, we should deprecate the old function names.
Add module level documentation nanocoap Documents the API created above and provides more direction on how to use it. See doc page for WIP.
API update for 'finish' functions. gcoap Deprecate use of gcoap_finish() after payload is written, in favor of gcoap_opt_finish_format() before payload is written. Simplifies implementation and removes gcoap-specific code.
Finish Block extension nanocoap #8932 open PR for block2; block1 already complete
Finish Observe extension for server gcoap #7548 open PR includes confirmable notifications
Finish confirmable messaging gcoap Add option to pause calling thread rather than copying the sent buffer. Add immediate ACK with follow-on response.