CoAP upload

Browse source code on GitHub

Overview

This sample demonstrates the use of the CoAP client API to upload a content to a CoAP server with PUT requests. The sample showcases various methods of uploading a content:

  • Short upload with payload pointer,

  • Short upload with payload callback,

  • Block transfer upload with payload pointer,

  • Block transfer upload with payload callback.

The sample is compatible with the CoAP service sample, or can run against a standalone CoAP server, for example aiocoap.

Requirements

Build and Running

Build the CoAP upload sample application like this:

west build -b <board to use> samples/net/sockets/coap_upload

The easiest way to run this sample application is to build and run it as a native_sim application. Some setup is required as described in Networking with native_sim board.

Download a CoAP server application, for example aiocoap (Python).

Using aiocoap:

python -m pip install "aiocoap[all]"
mkdir file_root
aiocoap-fileserver --write file_root

Launch net-setup.sh in net-tools:

./net-setup.sh

Build and run the CoAP upload sample application for native_sim like this:

west build -b native_sim samples/net/sockets/coap_upload
west build -t run

Sample output

[00:00:00.000,000] <inf> net_config: Initializing network
[00:00:00.000,000] <inf> net_config: IPv4 address: 192.0.2.1
[00:00:00.110,000] <inf> net_config: IPv6 address: 2001:db8::1
[00:00:00.110,000] <inf> net_config: IPv6 address: 2001:db8::1
[00:00:00.110,000] <inf> net_samples_common: Network connectivity established and IP address assigned
[00:00:00.110,000] <inf> net_samples_common: Waiting for network...
[00:00:00.110,000] <inf> coap_upload:
[00:00:00.110,000] <inf> coap_upload: * Starting CoAP upload using IPv4
[00:00:00.110,000] <inf> coap_upload:
[00:00:00.110,000] <inf> coap_upload: ** CoAP upload short
[00:00:00.180,000] <inf> coap_upload: CoAP upload short done in 70 ms
[00:00:00.180,000] <inf> coap_upload:
[00:00:00.180,000] <inf> coap_upload: ** CoAP upload short with callback
[00:00:00.240,000] <inf> coap_upload: CoAP upload short with callback done in 60 ms
[00:00:00.240,000] <inf> coap_upload:
[00:00:00.240,000] <inf> coap_upload: ** CoAP upload blockwise
[00:00:00.300,000] <inf> coap_upload: CoAP upload blockwise ongoing, sent 128 bytes so far
[00:00:00.360,000] <inf> coap_upload: CoAP upload blockwise ongoing, sent 256 bytes so far
[00:00:00.420,000] <inf> coap_upload: CoAP upload blockwise ongoing, sent 384 bytes so far
[00:00:00.480,000] <inf> coap_upload: CoAP upload blockwise done in 240 ms
[00:00:00.480,000] <inf> coap_upload:
[00:00:00.480,000] <inf> coap_upload: ** CoAP upload blockwise with callback
[00:00:00.540,000] <inf> coap_upload: CoAP upload blockwise with callback ongoing, sent 128 bytes so far
[00:00:00.600,000] <inf> coap_upload: CoAP upload blockwise with callback ongoing, sent 256 bytes so far
[00:00:00.660,000] <inf> coap_upload: CoAP upload blockwise with callback ongoing, sent 384 bytes so far
[00:00:00.720,000] <inf> coap_upload: CoAP upload blockwise with callback done in 240 ms
[00:00:01.230,000] <inf> coap_upload:
[00:00:01.230,000] <inf> coap_upload: * Starting CoAP upload using IPv6
[00:00:01.230,000] <inf> coap_upload:
[00:00:01.230,000] <inf> coap_upload: ** CoAP upload short
[00:00:01.320,000] <inf> coap_upload: CoAP upload short done in 90 ms
[00:00:01.320,000] <inf> coap_upload:
[00:00:01.320,000] <inf> coap_upload: ** CoAP upload short with callback
[00:00:01.380,000] <inf> coap_upload: CoAP upload short with callback done in 60 ms
[00:00:01.380,000] <inf> coap_upload:
[00:00:01.380,000] <inf> coap_upload: ** CoAP upload blockwise
[00:00:01.440,000] <inf> coap_upload: CoAP upload blockwise ongoing, sent 128 bytes so far
[00:00:01.500,000] <inf> coap_upload: CoAP upload blockwise ongoing, sent 256 bytes so far
[00:00:01.560,000] <inf> coap_upload: CoAP upload blockwise ongoing, sent 384 bytes so far
[00:00:01.620,000] <inf> coap_upload: CoAP upload blockwise done in 240 ms
[00:00:01.620,000] <inf> coap_upload:
[00:00:01.620,000] <inf> coap_upload: ** CoAP upload blockwise with callback
[00:00:01.680,000] <inf> coap_upload: CoAP upload blockwise with callback ongoing, sent 128 bytes so far
[00:00:01.740,000] <inf> coap_upload: CoAP upload blockwise with callback ongoing, sent 256 bytes so far
[00:00:01.800,000] <inf> coap_upload: CoAP upload blockwise with callback ongoing, sent 384 bytes so far
[00:00:01.860,000] <inf> coap_upload: CoAP upload blockwise with callback done in 240 ms

See also

COAP Library