xref: /aosp_15_r20/external/openthread/src/cli/README_COAP.md (revision cfb92d1480a9e65faed56933e9c12405f45898b4)
1*cfb92d14SAndroid Build Coastguard Worker# OpenThread CLI - CoAP Example
2*cfb92d14SAndroid Build Coastguard Worker
3*cfb92d14SAndroid Build Coastguard WorkerThe OpenThread CoAP APIs may be invoked via the OpenThread CLI.
4*cfb92d14SAndroid Build Coastguard Worker
5*cfb92d14SAndroid Build Coastguard Worker## Quick Start
6*cfb92d14SAndroid Build Coastguard Worker
7*cfb92d14SAndroid Build Coastguard Worker### Form Network
8*cfb92d14SAndroid Build Coastguard Worker
9*cfb92d14SAndroid Build Coastguard WorkerForm a network with at least two devices.
10*cfb92d14SAndroid Build Coastguard Worker
11*cfb92d14SAndroid Build Coastguard Worker### Node 1
12*cfb92d14SAndroid Build Coastguard Worker
13*cfb92d14SAndroid Build Coastguard WorkerOn node 1, setup CoAP server with resource `test-resource`.
14*cfb92d14SAndroid Build Coastguard Worker
15*cfb92d14SAndroid Build Coastguard Worker```bash
16*cfb92d14SAndroid Build Coastguard Worker> coap start
17*cfb92d14SAndroid Build Coastguard WorkerDone
18*cfb92d14SAndroid Build Coastguard Worker> coap resource test-resource
19*cfb92d14SAndroid Build Coastguard WorkerDone
20*cfb92d14SAndroid Build Coastguard Worker```
21*cfb92d14SAndroid Build Coastguard Worker
22*cfb92d14SAndroid Build Coastguard Worker### Node 2
23*cfb92d14SAndroid Build Coastguard Worker
24*cfb92d14SAndroid Build Coastguard Worker```bash
25*cfb92d14SAndroid Build Coastguard Worker> coap start
26*cfb92d14SAndroid Build Coastguard WorkerDone
27*cfb92d14SAndroid Build Coastguard Worker> coap get fdde:ad00:beef:0:d395:daee:a75:3964 test-resource
28*cfb92d14SAndroid Build Coastguard WorkerDone
29*cfb92d14SAndroid Build Coastguard Workercoap response from [fdde:ad00:beef:0:2780:9423:166c:1aac] with payload: 30
30*cfb92d14SAndroid Build Coastguard Worker> coap put fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload
31*cfb92d14SAndroid Build Coastguard WorkerDone
32*cfb92d14SAndroid Build Coastguard Workercoap response from [fdde:ad00:beef:0:2780:9423:166c:1aac]
33*cfb92d14SAndroid Build Coastguard Worker```
34*cfb92d14SAndroid Build Coastguard Worker
35*cfb92d14SAndroid Build Coastguard Worker### Result
36*cfb92d14SAndroid Build Coastguard Worker
37*cfb92d14SAndroid Build Coastguard WorkerOn node 1, you should see output similar to below:
38*cfb92d14SAndroid Build Coastguard Worker
39*cfb92d14SAndroid Build Coastguard Worker```bash
40*cfb92d14SAndroid Build Coastguard Workercoap request from [fdde:ad00:beef:0:b3:e3f6:2dcc:4b79] GET
41*cfb92d14SAndroid Build Coastguard Workercoap response sent
42*cfb92d14SAndroid Build Coastguard Workercoap request from [fdde:ad00:beef:0:b3:e3f6:2dcc:4b79] PUT with payload: 7061796c6f6164
43*cfb92d14SAndroid Build Coastguard Workercoap response sent
44*cfb92d14SAndroid Build Coastguard Worker```
45*cfb92d14SAndroid Build Coastguard Worker
46*cfb92d14SAndroid Build Coastguard Worker## Command List
47*cfb92d14SAndroid Build Coastguard Worker
48*cfb92d14SAndroid Build Coastguard Worker- [help](#help)
49*cfb92d14SAndroid Build Coastguard Worker- [cancel](#cancel)
50*cfb92d14SAndroid Build Coastguard Worker- [delete](#delete-address-uri-path-type-payload)
51*cfb92d14SAndroid Build Coastguard Worker- [get](#get-address-uri-path-type)
52*cfb92d14SAndroid Build Coastguard Worker- [observe](#observe-address-uri-path-type)
53*cfb92d14SAndroid Build Coastguard Worker- [parameters](#parameters)
54*cfb92d14SAndroid Build Coastguard Worker- [post](#post-address-uri-path-type-payload)
55*cfb92d14SAndroid Build Coastguard Worker- [put](#put-address-uri-path-type-payload)
56*cfb92d14SAndroid Build Coastguard Worker- [resource](#resource-uri-path)
57*cfb92d14SAndroid Build Coastguard Worker- [set](#set-new-content)
58*cfb92d14SAndroid Build Coastguard Worker- [start](#start)
59*cfb92d14SAndroid Build Coastguard Worker- [stop](#stop)
60*cfb92d14SAndroid Build Coastguard Worker
61*cfb92d14SAndroid Build Coastguard Worker## Command Details
62*cfb92d14SAndroid Build Coastguard Worker
63*cfb92d14SAndroid Build Coastguard Worker### help
64*cfb92d14SAndroid Build Coastguard Worker
65*cfb92d14SAndroid Build Coastguard Worker```bash
66*cfb92d14SAndroid Build Coastguard Worker> coap help
67*cfb92d14SAndroid Build Coastguard Workerhelp
68*cfb92d14SAndroid Build Coastguard Workercancel
69*cfb92d14SAndroid Build Coastguard Workerdelete
70*cfb92d14SAndroid Build Coastguard Workerget
71*cfb92d14SAndroid Build Coastguard Workerobserve
72*cfb92d14SAndroid Build Coastguard Workerparameters
73*cfb92d14SAndroid Build Coastguard Workerpost
74*cfb92d14SAndroid Build Coastguard Workerput
75*cfb92d14SAndroid Build Coastguard Workerresource
76*cfb92d14SAndroid Build Coastguard Workerset
77*cfb92d14SAndroid Build Coastguard Workerstart
78*cfb92d14SAndroid Build Coastguard Workerstop
79*cfb92d14SAndroid Build Coastguard WorkerDone
80*cfb92d14SAndroid Build Coastguard Worker```
81*cfb92d14SAndroid Build Coastguard Worker
82*cfb92d14SAndroid Build Coastguard WorkerList the CoAP CLI commands.
83*cfb92d14SAndroid Build Coastguard Worker
84*cfb92d14SAndroid Build Coastguard Worker### cancel
85*cfb92d14SAndroid Build Coastguard Worker
86*cfb92d14SAndroid Build Coastguard WorkerRequest the cancellation of an existing observation subscription to a remote resource.
87*cfb92d14SAndroid Build Coastguard Worker
88*cfb92d14SAndroid Build Coastguard Worker```bash
89*cfb92d14SAndroid Build Coastguard Worker> coap cancel
90*cfb92d14SAndroid Build Coastguard WorkerDone
91*cfb92d14SAndroid Build Coastguard Worker```
92*cfb92d14SAndroid Build Coastguard Worker
93*cfb92d14SAndroid Build Coastguard Worker### delete \<address\> \<uri-path\> \[type\] \[payload\]
94*cfb92d14SAndroid Build Coastguard Worker
95*cfb92d14SAndroid Build Coastguard Worker- address: IPv6 address of the CoAP server.
96*cfb92d14SAndroid Build Coastguard Worker- uri-path: URI path of the resource.
97*cfb92d14SAndroid Build Coastguard Worker- type: "con" for Confirmable or "non-con" for Non-confirmable (default).
98*cfb92d14SAndroid Build Coastguard Worker- payload: CoAP request payload.
99*cfb92d14SAndroid Build Coastguard Worker
100*cfb92d14SAndroid Build Coastguard Worker```bash
101*cfb92d14SAndroid Build Coastguard Worker> coap delete fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload
102*cfb92d14SAndroid Build Coastguard WorkerDone
103*cfb92d14SAndroid Build Coastguard Worker```
104*cfb92d14SAndroid Build Coastguard Worker
105*cfb92d14SAndroid Build Coastguard Worker### get \<address\> \<uri-path\> \[type\]
106*cfb92d14SAndroid Build Coastguard Worker
107*cfb92d14SAndroid Build Coastguard Worker- address: IPv6 address of the CoAP server.
108*cfb92d14SAndroid Build Coastguard Worker- uri-path: URI path of the resource.
109*cfb92d14SAndroid Build Coastguard Worker- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" if the response should be transferred block-wise. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024")
110*cfb92d14SAndroid Build Coastguard Worker
111*cfb92d14SAndroid Build Coastguard Worker```bash
112*cfb92d14SAndroid Build Coastguard Worker> coap get fdde:ad00:beef:0:2780:9423:166c:1aac test-resource
113*cfb92d14SAndroid Build Coastguard WorkerDone
114*cfb92d14SAndroid Build Coastguard Worker```
115*cfb92d14SAndroid Build Coastguard Worker
116*cfb92d14SAndroid Build Coastguard Worker```bash
117*cfb92d14SAndroid Build Coastguard Worker> coap get fdde:ad00:beef:0:2780:9423:166c:1aac test-resource block-1024
118*cfb92d14SAndroid Build Coastguard WorkerDone
119*cfb92d14SAndroid Build Coastguard Worker```
120*cfb92d14SAndroid Build Coastguard Worker
121*cfb92d14SAndroid Build Coastguard Worker### observe \<address\> \<uri-path\> \[type\]
122*cfb92d14SAndroid Build Coastguard Worker
123*cfb92d14SAndroid Build Coastguard WorkerThis is the same a `get`, but the `Observe` parameter will be sent, set to 0 triggering a subscription request.
124*cfb92d14SAndroid Build Coastguard Worker
125*cfb92d14SAndroid Build Coastguard Worker- address: IPv6 address of the CoAP server.
126*cfb92d14SAndroid Build Coastguard Worker- uri-path: URI path of the resource.
127*cfb92d14SAndroid Build Coastguard Worker- type: "con" for Confirmable or "non-con" for Non-confirmable (default).
128*cfb92d14SAndroid Build Coastguard Worker
129*cfb92d14SAndroid Build Coastguard Worker```bash
130*cfb92d14SAndroid Build Coastguard Worker> coap observe fdde:ad00:beef:0:2780:9423:166c:1aac test-resource
131*cfb92d14SAndroid Build Coastguard WorkerDone
132*cfb92d14SAndroid Build Coastguard Worker```
133*cfb92d14SAndroid Build Coastguard Worker
134*cfb92d14SAndroid Build Coastguard Worker### parameters \<type\> \["default"|<ack_timeout\> <ack_random_factor_numerator\> <ack_random_factor_denominator\> <max_retransmit\>\]
135*cfb92d14SAndroid Build Coastguard Worker
136*cfb92d14SAndroid Build Coastguard WorkerSets transmission parameters for the following interactions.
137*cfb92d14SAndroid Build Coastguard Worker
138*cfb92d14SAndroid Build Coastguard Worker- type: "request" for CoAP requests and "response" for CoAP responses.
139*cfb92d14SAndroid Build Coastguard Worker
140*cfb92d14SAndroid Build Coastguard WorkerIf no more parameters are given, the command prints the current configuration:
141*cfb92d14SAndroid Build Coastguard Worker
142*cfb92d14SAndroid Build Coastguard Worker```bash
143*cfb92d14SAndroid Build Coastguard Worker> coap parameters request
144*cfb92d14SAndroid Build Coastguard WorkerTransmission parameters for request:
145*cfb92d14SAndroid Build Coastguard WorkerACK_TIMEOUT=1000 ms, ACK_RANDOM_FACTOR=255/254, MAX_RETRANSMIT=2
146*cfb92d14SAndroid Build Coastguard WorkerDone
147*cfb92d14SAndroid Build Coastguard Worker```
148*cfb92d14SAndroid Build Coastguard Worker
149*cfb92d14SAndroid Build Coastguard WorkerIf `"default"` is given, the command sets the default configuration for the transmission parameters.
150*cfb92d14SAndroid Build Coastguard Worker
151*cfb92d14SAndroid Build Coastguard Worker```bash
152*cfb92d14SAndroid Build Coastguard Worker> coap parameters request default
153*cfb92d14SAndroid Build Coastguard WorkerTransmission parameters for request:
154*cfb92d14SAndroid Build Coastguard Workerdefault
155*cfb92d14SAndroid Build Coastguard WorkerDone
156*cfb92d14SAndroid Build Coastguard Worker```
157*cfb92d14SAndroid Build Coastguard Worker
158*cfb92d14SAndroid Build Coastguard WorkerAlso, you can specify the transmission parameters in the command line:
159*cfb92d14SAndroid Build Coastguard Worker
160*cfb92d14SAndroid Build Coastguard Worker- ack_timeout (0~UINT32_MAX): RFC7252 ACK_TIMEOUT, in milliseconds.
161*cfb92d14SAndroid Build Coastguard Worker- ack_random_factor_numerator, ack_random_factor_denominator (0~255): RFC7252 ACK_RANDOM_FACTOR=ack_random_factor_numerator/ack_random_factor_denominator.
162*cfb92d14SAndroid Build Coastguard Worker- max_retransmit (0~255): RFC7252 MAX_RETRANSMIT.
163*cfb92d14SAndroid Build Coastguard Worker
164*cfb92d14SAndroid Build Coastguard Worker```bash
165*cfb92d14SAndroid Build Coastguard Worker> coap parameters request 1000 255 254 2
166*cfb92d14SAndroid Build Coastguard WorkerTransmission parameters for request:
167*cfb92d14SAndroid Build Coastguard WorkerACK_TIMEOUT=1000 ms, ACK_RANDOM_FACTOR=255/254, MAX_RETRANSMIT=2
168*cfb92d14SAndroid Build Coastguard WorkerDone
169*cfb92d14SAndroid Build Coastguard Worker```
170*cfb92d14SAndroid Build Coastguard Worker
171*cfb92d14SAndroid Build Coastguard Worker### post \<address\> \<uri-path\> \[type\] \[payload\]
172*cfb92d14SAndroid Build Coastguard Worker
173*cfb92d14SAndroid Build Coastguard Worker- address: IPv6 address of the CoAP server.
174*cfb92d14SAndroid Build Coastguard Worker- uri-path: URI path of the resource.
175*cfb92d14SAndroid Build Coastguard Worker- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" to send blocks with random payload. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024")
176*cfb92d14SAndroid Build Coastguard Worker- payload: CoAP request payload. If \[type\] is "block-<block-size>", the amount of blocks to be sent can be set here.
177*cfb92d14SAndroid Build Coastguard Worker
178*cfb92d14SAndroid Build Coastguard Worker```bash
179*cfb92d14SAndroid Build Coastguard Worker> coap post fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload
180*cfb92d14SAndroid Build Coastguard WorkerDone
181*cfb92d14SAndroid Build Coastguard Worker```
182*cfb92d14SAndroid Build Coastguard Worker
183*cfb92d14SAndroid Build Coastguard Worker```bash
184*cfb92d14SAndroid Build Coastguard Worker> coap post fdde:ad00:beef:0:2780:9423:166c:1aac test-resource block-1024 10
185*cfb92d14SAndroid Build Coastguard WorkerDone
186*cfb92d14SAndroid Build Coastguard Worker```
187*cfb92d14SAndroid Build Coastguard Worker
188*cfb92d14SAndroid Build Coastguard Worker### put \<address\> \<uri-path\> \[type\] \[payload\]
189*cfb92d14SAndroid Build Coastguard Worker
190*cfb92d14SAndroid Build Coastguard Worker- address: IPv6 address of the CoAP server.
191*cfb92d14SAndroid Build Coastguard Worker- uri-path: URI path of the resource.
192*cfb92d14SAndroid Build Coastguard Worker- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" to send blocks with random payload. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024")
193*cfb92d14SAndroid Build Coastguard Worker- payload: CoAP request payload. If \[type\] is "block-<block-size>", the amount of blocks to be sent can be set here.
194*cfb92d14SAndroid Build Coastguard Worker
195*cfb92d14SAndroid Build Coastguard Worker```bash
196*cfb92d14SAndroid Build Coastguard Worker> coap put fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload
197*cfb92d14SAndroid Build Coastguard WorkerDone
198*cfb92d14SAndroid Build Coastguard Worker```
199*cfb92d14SAndroid Build Coastguard Worker
200*cfb92d14SAndroid Build Coastguard Worker```bash
201*cfb92d14SAndroid Build Coastguard Worker> coap put fdde:ad00:beef:0:2780:9423:166c:1aac test-resource block-1024 10
202*cfb92d14SAndroid Build Coastguard WorkerDone
203*cfb92d14SAndroid Build Coastguard Worker```
204*cfb92d14SAndroid Build Coastguard Worker
205*cfb92d14SAndroid Build Coastguard Worker### resource \[uri-path\]
206*cfb92d14SAndroid Build Coastguard Worker
207*cfb92d14SAndroid Build Coastguard WorkerSets the URI path for the test resource.
208*cfb92d14SAndroid Build Coastguard Worker
209*cfb92d14SAndroid Build Coastguard Worker```bash
210*cfb92d14SAndroid Build Coastguard Worker> coap resource test-resource
211*cfb92d14SAndroid Build Coastguard WorkerDone
212*cfb92d14SAndroid Build Coastguard Worker> coap resource
213*cfb92d14SAndroid Build Coastguard Workertest-resource
214*cfb92d14SAndroid Build Coastguard WorkerDone
215*cfb92d14SAndroid Build Coastguard Worker```
216*cfb92d14SAndroid Build Coastguard Worker
217*cfb92d14SAndroid Build Coastguard Worker### set \[new-content\]
218*cfb92d14SAndroid Build Coastguard Worker
219*cfb92d14SAndroid Build Coastguard WorkerSets the content sent by the test resource. If a CoAP client is observing the resource, a notification is sent to that client.
220*cfb92d14SAndroid Build Coastguard Worker
221*cfb92d14SAndroid Build Coastguard Worker```bash
222*cfb92d14SAndroid Build Coastguard Worker> coap set Testing123
223*cfb92d14SAndroid Build Coastguard WorkerDone
224*cfb92d14SAndroid Build Coastguard Worker```
225*cfb92d14SAndroid Build Coastguard Worker
226*cfb92d14SAndroid Build Coastguard Worker### start
227*cfb92d14SAndroid Build Coastguard Worker
228*cfb92d14SAndroid Build Coastguard WorkerStarts the application coap service.
229*cfb92d14SAndroid Build Coastguard Worker
230*cfb92d14SAndroid Build Coastguard Worker```bash
231*cfb92d14SAndroid Build Coastguard Worker> coap start
232*cfb92d14SAndroid Build Coastguard WorkerDone
233*cfb92d14SAndroid Build Coastguard Worker```
234*cfb92d14SAndroid Build Coastguard Worker
235*cfb92d14SAndroid Build Coastguard Worker### stop
236*cfb92d14SAndroid Build Coastguard Worker
237*cfb92d14SAndroid Build Coastguard WorkerStops the application coap service.
238*cfb92d14SAndroid Build Coastguard Worker
239*cfb92d14SAndroid Build Coastguard Worker```bash
240*cfb92d14SAndroid Build Coastguard Worker> coap stop
241*cfb92d14SAndroid Build Coastguard WorkerDone
242*cfb92d14SAndroid Build Coastguard Worker```
243