xref: /aosp_15_r20/external/openthread/src/lib/spinel/spinel.h (revision cfb92d1480a9e65faed56933e9c12405f45898b4)
1*cfb92d14SAndroid Build Coastguard Worker /*
2*cfb92d14SAndroid Build Coastguard Worker  *    Copyright (c) 2016, The OpenThread Authors.
3*cfb92d14SAndroid Build Coastguard Worker  *    All rights reserved.
4*cfb92d14SAndroid Build Coastguard Worker  *
5*cfb92d14SAndroid Build Coastguard Worker  *    Redistribution and use in source and binary forms, with or without
6*cfb92d14SAndroid Build Coastguard Worker  *    modification, are permitted provided that the following conditions are met:
7*cfb92d14SAndroid Build Coastguard Worker  *    1. Redistributions of source code must retain the above copyright
8*cfb92d14SAndroid Build Coastguard Worker  *       notice, this list of conditions and the following disclaimer.
9*cfb92d14SAndroid Build Coastguard Worker  *    2. Redistributions in binary form must reproduce the above copyright
10*cfb92d14SAndroid Build Coastguard Worker  *       notice, this list of conditions and the following disclaimer in the
11*cfb92d14SAndroid Build Coastguard Worker  *       documentation and/or other materials provided with the distribution.
12*cfb92d14SAndroid Build Coastguard Worker  *    3. Neither the name of the copyright holder nor the
13*cfb92d14SAndroid Build Coastguard Worker  *       names of its contributors may be used to endorse or promote products
14*cfb92d14SAndroid Build Coastguard Worker  *       derived from this software without specific prior written permission.
15*cfb92d14SAndroid Build Coastguard Worker  *
16*cfb92d14SAndroid Build Coastguard Worker  *    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17*cfb92d14SAndroid Build Coastguard Worker  *    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18*cfb92d14SAndroid Build Coastguard Worker  *    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19*cfb92d14SAndroid Build Coastguard Worker  *    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20*cfb92d14SAndroid Build Coastguard Worker  *    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21*cfb92d14SAndroid Build Coastguard Worker  *    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22*cfb92d14SAndroid Build Coastguard Worker  *    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23*cfb92d14SAndroid Build Coastguard Worker  *    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24*cfb92d14SAndroid Build Coastguard Worker  *    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25*cfb92d14SAndroid Build Coastguard Worker  *    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*cfb92d14SAndroid Build Coastguard Worker  */
27*cfb92d14SAndroid Build Coastguard Worker 
28*cfb92d14SAndroid Build Coastguard Worker /**
29*cfb92d14SAndroid Build Coastguard Worker  * @file
30*cfb92d14SAndroid Build Coastguard Worker  *   This file contains definitions of spinel.
31*cfb92d14SAndroid Build Coastguard Worker  */
32*cfb92d14SAndroid Build Coastguard Worker 
33*cfb92d14SAndroid Build Coastguard Worker #ifndef SPINEL_HEADER_INCLUDED
34*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_INCLUDED 1
35*cfb92d14SAndroid Build Coastguard Worker 
36*cfb92d14SAndroid Build Coastguard Worker /*
37*cfb92d14SAndroid Build Coastguard Worker  *   Spinel is a host-controller protocol designed to enable
38*cfb92d14SAndroid Build Coastguard Worker  *   inter-operation over simple serial connections between general purpose
39*cfb92d14SAndroid Build Coastguard Worker  *   device operating systems (OS) host and network co-processors (NCP) for
40*cfb92d14SAndroid Build Coastguard Worker  *   the purpose of controlling and managing the NCP.
41*cfb92d14SAndroid Build Coastguard Worker  *
42*cfb92d14SAndroid Build Coastguard Worker  * ---------------------------------------------------------------------------
43*cfb92d14SAndroid Build Coastguard Worker  *
44*cfb92d14SAndroid Build Coastguard Worker  *   Frame Format
45*cfb92d14SAndroid Build Coastguard Worker  *
46*cfb92d14SAndroid Build Coastguard Worker  *   A frame is defined simply as the concatenation of
47*cfb92d14SAndroid Build Coastguard Worker  *
48*cfb92d14SAndroid Build Coastguard Worker  *   -  A header byte
49*cfb92d14SAndroid Build Coastguard Worker  *   -  A command (up to three bytes)
50*cfb92d14SAndroid Build Coastguard Worker  *   -  An optional command payload
51*cfb92d14SAndroid Build Coastguard Worker  *
52*cfb92d14SAndroid Build Coastguard Worker  *              +---------+--------+-----+-------------+
53*cfb92d14SAndroid Build Coastguard Worker  *              | Octets: |   1    | 1-3 |      n      |
54*cfb92d14SAndroid Build Coastguard Worker  *              +---------+--------+-----+-------------+
55*cfb92d14SAndroid Build Coastguard Worker  *              | Fields: | HEADER | CMD | CMD_PAYLOAD |
56*cfb92d14SAndroid Build Coastguard Worker  *              +---------+--------+-----+-------------+
57*cfb92d14SAndroid Build Coastguard Worker  *
58*cfb92d14SAndroid Build Coastguard Worker  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
59*cfb92d14SAndroid Build Coastguard Worker  *
60*cfb92d14SAndroid Build Coastguard Worker  *   Header Format
61*cfb92d14SAndroid Build Coastguard Worker  *
62*cfb92d14SAndroid Build Coastguard Worker  *   The header byte is broken down as follows:
63*cfb92d14SAndroid Build Coastguard Worker  *
64*cfb92d14SAndroid Build Coastguard Worker  *                    0   1   2   3   4   5   6   7
65*cfb92d14SAndroid Build Coastguard Worker  *                  +---+---+---+---+---+---+---+---+
66*cfb92d14SAndroid Build Coastguard Worker  *                  |  FLG  |  IID  |      TID      |
67*cfb92d14SAndroid Build Coastguard Worker  *                  +---+---+---+---+---+---+---+---+
68*cfb92d14SAndroid Build Coastguard Worker  *
69*cfb92d14SAndroid Build Coastguard Worker  *
70*cfb92d14SAndroid Build Coastguard Worker  *   The flag field of the header byte ("FLG") is always set to the value
71*cfb92d14SAndroid Build Coastguard Worker  *   two (or "10" in binary).  Any frame received with these bits set to
72*cfb92d14SAndroid Build Coastguard Worker  *   any other value else MUST NOT be considered a Spinel frame.
73*cfb92d14SAndroid Build Coastguard Worker  *
74*cfb92d14SAndroid Build Coastguard Worker  *   This convention allows Spinel to be line compatible with BTLE HCI.
75*cfb92d14SAndroid Build Coastguard Worker  *   By defining the first two bit in this way we can disambiguate between
76*cfb92d14SAndroid Build Coastguard Worker  *   Spinel frames and HCI frames (which always start with either "0x01"
77*cfb92d14SAndroid Build Coastguard Worker  *   or "0x04") without any additional framing overhead.
78*cfb92d14SAndroid Build Coastguard Worker  *
79*cfb92d14SAndroid Build Coastguard Worker  *   The Interface Identifier (IID) is a number between 0 and 3, which
80*cfb92d14SAndroid Build Coastguard Worker  *   is associated by the OS with a specific NCP. This allows the protocol
81*cfb92d14SAndroid Build Coastguard Worker  *   to support multiple networks under same connection.
82*cfb92d14SAndroid Build Coastguard Worker  *
83*cfb92d14SAndroid Build Coastguard Worker  *   The least significant bits of the header represent the Transaction
84*cfb92d14SAndroid Build Coastguard Worker  *   Identifier (TID). The TID is used for correlating responses to the
85*cfb92d14SAndroid Build Coastguard Worker  *   commands which generated them.
86*cfb92d14SAndroid Build Coastguard Worker  *
87*cfb92d14SAndroid Build Coastguard Worker  *   When a command is sent from the host, any reply to that command sent
88*cfb92d14SAndroid Build Coastguard Worker  *   by the NCP will use the same value for the IID and TID.  When the host
89*cfb92d14SAndroid Build Coastguard Worker  *   receives a frame that matches the IID and TID of the command it sent, it
90*cfb92d14SAndroid Build Coastguard Worker  *   can easily recognize that frame as the actual response to that command.
91*cfb92d14SAndroid Build Coastguard Worker  *
92*cfb92d14SAndroid Build Coastguard Worker  *   The TID value of zero (0) is used for commands to which a correlated
93*cfb92d14SAndroid Build Coastguard Worker  *   response is not expected or needed, such as for unsolicited update
94*cfb92d14SAndroid Build Coastguard Worker  *   commands sent to the host from the NCP.
95*cfb92d14SAndroid Build Coastguard Worker  *
96*cfb92d14SAndroid Build Coastguard Worker  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
97*cfb92d14SAndroid Build Coastguard Worker  *
98*cfb92d14SAndroid Build Coastguard Worker  *   The command identifier is a 21-bit unsigned integer encoded in up to
99*cfb92d14SAndroid Build Coastguard Worker  *   three bytes using the packed unsigned integer format described below.
100*cfb92d14SAndroid Build Coastguard Worker  *   Depending on the semantics of the command in question, a payload MAY
101*cfb92d14SAndroid Build Coastguard Worker  *   be included in the frame.  The exact composition and length of the
102*cfb92d14SAndroid Build Coastguard Worker  *   payload is defined by the command identifier.
103*cfb92d14SAndroid Build Coastguard Worker  *
104*cfb92d14SAndroid Build Coastguard Worker  * ---------------------------------------------------------------------------
105*cfb92d14SAndroid Build Coastguard Worker  *
106*cfb92d14SAndroid Build Coastguard Worker  *   Data Packing
107*cfb92d14SAndroid Build Coastguard Worker  *
108*cfb92d14SAndroid Build Coastguard Worker  *   Data serialization for properties is performed using a light-weight
109*cfb92d14SAndroid Build Coastguard Worker  *   data packing format which was loosely inspired by D-Bus.  The format
110*cfb92d14SAndroid Build Coastguard Worker  *   of a serialization is defined by a specially formatted string.
111*cfb92d14SAndroid Build Coastguard Worker  *
112*cfb92d14SAndroid Build Coastguard Worker  *   This packing format is used for notational convenience.  While this
113*cfb92d14SAndroid Build Coastguard Worker  *   string-based data-type format has been designed so that the strings
114*cfb92d14SAndroid Build Coastguard Worker  *   may be directly used by a structured data parser, such a thing is not
115*cfb92d14SAndroid Build Coastguard Worker  *   required to implement Spinel.
116*cfb92d14SAndroid Build Coastguard Worker  *
117*cfb92d14SAndroid Build Coastguard Worker  *   Goals:
118*cfb92d14SAndroid Build Coastguard Worker  *
119*cfb92d14SAndroid Build Coastguard Worker  *   -  Be lightweight and favor direct representation of values.
120*cfb92d14SAndroid Build Coastguard Worker  *   -  Use an easily readable and memorable format string.
121*cfb92d14SAndroid Build Coastguard Worker  *   -  Support lists and structures.
122*cfb92d14SAndroid Build Coastguard Worker  *   -  Allow properties to be appended to structures while maintaining
123*cfb92d14SAndroid Build Coastguard Worker  *      backward compatibility.
124*cfb92d14SAndroid Build Coastguard Worker  *
125*cfb92d14SAndroid Build Coastguard Worker  *   Each primitive data-type has an ASCII character associated with it.
126*cfb92d14SAndroid Build Coastguard Worker  *   Structures can be represented as strings of these characters.  For
127*cfb92d14SAndroid Build Coastguard Worker  *   example:
128*cfb92d14SAndroid Build Coastguard Worker  *
129*cfb92d14SAndroid Build Coastguard Worker  *   -  "C": A single unsigned byte.
130*cfb92d14SAndroid Build Coastguard Worker  *   -  "C6U": A single unsigned byte, followed by a 128-bit IPv6 address,
131*cfb92d14SAndroid Build Coastguard Worker  *      followed by a zero-terminated UTF8 string.
132*cfb92d14SAndroid Build Coastguard Worker  *   -  "A(6)": An array of concatenated IPv6 addresses
133*cfb92d14SAndroid Build Coastguard Worker  *
134*cfb92d14SAndroid Build Coastguard Worker  *   In each case, the data is represented exactly as described.  For
135*cfb92d14SAndroid Build Coastguard Worker  *   example, an array of 10 IPv6 address is stored as 160 bytes.
136*cfb92d14SAndroid Build Coastguard Worker  *
137*cfb92d14SAndroid Build Coastguard Worker  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
138*cfb92d14SAndroid Build Coastguard Worker  *
139*cfb92d14SAndroid Build Coastguard Worker  *   Primitive Types
140*cfb92d14SAndroid Build Coastguard Worker  *
141*cfb92d14SAndroid Build Coastguard Worker  *   +----------+----------------------+---------------------------------+
142*cfb92d14SAndroid Build Coastguard Worker  *   |   Char   | Name                 | Description                     |
143*cfb92d14SAndroid Build Coastguard Worker  *   +----------+----------------------+---------------------------------+
144*cfb92d14SAndroid Build Coastguard Worker  *   |   "."    | DATATYPE_VOID        | Empty data type. Used           |
145*cfb92d14SAndroid Build Coastguard Worker  *   |          |                      | internally.                     |
146*cfb92d14SAndroid Build Coastguard Worker  *   |   "b"    | DATATYPE_BOOL        | Boolean value. Encoded in       |
147*cfb92d14SAndroid Build Coastguard Worker  *   |          |                      | 8-bits as either 0x00 or 0x01.  |
148*cfb92d14SAndroid Build Coastguard Worker  *   |          |                      | All other values are illegal.   |
149*cfb92d14SAndroid Build Coastguard Worker  *   |   "C"    | DATATYPE_UINT8       | Unsigned 8-bit integer.         |
150*cfb92d14SAndroid Build Coastguard Worker  *   |   "c"    | DATATYPE_INT8        | Signed 8-bit integer.           |
151*cfb92d14SAndroid Build Coastguard Worker  *   |   "S"    | DATATYPE_UINT16      | Unsigned 16-bit integer.        |
152*cfb92d14SAndroid Build Coastguard Worker  *   |   "s"    | DATATYPE_INT16       | Signed 16-bit integer.          |
153*cfb92d14SAndroid Build Coastguard Worker  *   |   "L"    | DATATYPE_UINT32      | Unsigned 32-bit integer.        |
154*cfb92d14SAndroid Build Coastguard Worker  *   |   "l"    | DATATYPE_INT32       | Signed 32-bit integer.          |
155*cfb92d14SAndroid Build Coastguard Worker  *   |   "i"    | DATATYPE_UINT_PACKED | Packed Unsigned Integer. See    |
156*cfb92d14SAndroid Build Coastguard Worker  *   |          |                      | description below               |
157*cfb92d14SAndroid Build Coastguard Worker  *   |   "6"    | DATATYPE_IPv6ADDR    | IPv6 Address. (Big-endian)      |
158*cfb92d14SAndroid Build Coastguard Worker  *   |   "E"    | DATATYPE_EUI64       | EUI-64 Address. (Big-endian)    |
159*cfb92d14SAndroid Build Coastguard Worker  *   |   "e"    | DATATYPE_EUI48       | EUI-48 Address. (Big-endian)    |
160*cfb92d14SAndroid Build Coastguard Worker  *   |   "D"    | DATATYPE_DATA        | Arbitrary data. See related     |
161*cfb92d14SAndroid Build Coastguard Worker  *   |          |                      | section below for details.      |
162*cfb92d14SAndroid Build Coastguard Worker  *   |   "d"    | DATATYPE_DATA_WLEN   | Arbitrary data with prepended   |
163*cfb92d14SAndroid Build Coastguard Worker  *   |          |                      | length. See below for details   |
164*cfb92d14SAndroid Build Coastguard Worker  *   |   "U"    | DATATYPE_UTF8        | Zero-terminated UTF8-encoded    |
165*cfb92d14SAndroid Build Coastguard Worker  *   |          |                      | string.                         |
166*cfb92d14SAndroid Build Coastguard Worker  *   | "t(...)" | DATATYPE_STRUCT      | Structured datatype with        |
167*cfb92d14SAndroid Build Coastguard Worker  *   |          |                      | prepended length.               |
168*cfb92d14SAndroid Build Coastguard Worker  *   | "A(...)" | DATATYPE_ARRAY       | Array of datatypes. Compound    |
169*cfb92d14SAndroid Build Coastguard Worker  *   |          |                      | type.                           |
170*cfb92d14SAndroid Build Coastguard Worker  *   +----------+----------------------+---------------------------------+
171*cfb92d14SAndroid Build Coastguard Worker  *
172*cfb92d14SAndroid Build Coastguard Worker  *   All multi-byte values are little-endian unless explicitly stated
173*cfb92d14SAndroid Build Coastguard Worker  *   otherwise.
174*cfb92d14SAndroid Build Coastguard Worker  *
175*cfb92d14SAndroid Build Coastguard Worker  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
176*cfb92d14SAndroid Build Coastguard Worker  *
177*cfb92d14SAndroid Build Coastguard Worker  *   Packed Unsigned Integer
178*cfb92d14SAndroid Build Coastguard Worker  *
179*cfb92d14SAndroid Build Coastguard Worker  *   For certain types of integers, such command or property identifiers,
180*cfb92d14SAndroid Build Coastguard Worker  *   usually have a value on the wire that is less than 127.  However, in
181*cfb92d14SAndroid Build Coastguard Worker  *   order to not preclude the use of values larger than 255, we would
182*cfb92d14SAndroid Build Coastguard Worker  *   need to add an extra byte.  Doing this would add an extra byte to the
183*cfb92d14SAndroid Build Coastguard Worker  *   majority of instances, which can add up in terms of bandwidth.
184*cfb92d14SAndroid Build Coastguard Worker  *
185*cfb92d14SAndroid Build Coastguard Worker  *   The packed unsigned integer format is based on the unsigned integer
186*cfb92d14SAndroid Build Coastguard Worker  *   format in EXI, except that we limit the maximum value to the
187*cfb92d14SAndroid Build Coastguard Worker  *   largest value that can be encoded into three bytes (2,097,151).
188*cfb92d14SAndroid Build Coastguard Worker  *
189*cfb92d14SAndroid Build Coastguard Worker  *   For all values less than 127, the packed form of the number is simply
190*cfb92d14SAndroid Build Coastguard Worker  *   a single byte which directly represents the number.  For values
191*cfb92d14SAndroid Build Coastguard Worker  *   larger than 127, the following process is used to encode the value:
192*cfb92d14SAndroid Build Coastguard Worker  *
193*cfb92d14SAndroid Build Coastguard Worker  *   1.  The unsigned integer is broken up into _n_ 7-bit chunks and
194*cfb92d14SAndroid Build Coastguard Worker  *       placed into _n_ octets, leaving the most significant bit of each
195*cfb92d14SAndroid Build Coastguard Worker  *       octet unused.
196*cfb92d14SAndroid Build Coastguard Worker  *   2.  Order the octets from least-significant to most-significant.
197*cfb92d14SAndroid Build Coastguard Worker  *       (Little-endian)
198*cfb92d14SAndroid Build Coastguard Worker  *   3.  Clear the most significant bit of the most significant octet.
199*cfb92d14SAndroid Build Coastguard Worker  *       Set the least significant bit on all other octets.
200*cfb92d14SAndroid Build Coastguard Worker  *
201*cfb92d14SAndroid Build Coastguard Worker  *   Where `n` is the smallest number of 7-bit chunks you can use to
202*cfb92d14SAndroid Build Coastguard Worker  *   represent the given value.
203*cfb92d14SAndroid Build Coastguard Worker  *
204*cfb92d14SAndroid Build Coastguard Worker  *   Take the value 1337, for example:
205*cfb92d14SAndroid Build Coastguard Worker  *
206*cfb92d14SAndroid Build Coastguard Worker  *                              1337 => 0x0539
207*cfb92d14SAndroid Build Coastguard Worker  *                                   => [39 0A]
208*cfb92d14SAndroid Build Coastguard Worker  *                                   => [B9 0A]
209*cfb92d14SAndroid Build Coastguard Worker  *
210*cfb92d14SAndroid Build Coastguard Worker  *   To decode the value, you collect the 7-bit chunks until you find an
211*cfb92d14SAndroid Build Coastguard Worker  *   octet with the most significant bit clear.
212*cfb92d14SAndroid Build Coastguard Worker  *
213*cfb92d14SAndroid Build Coastguard Worker  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
214*cfb92d14SAndroid Build Coastguard Worker  *
215*cfb92d14SAndroid Build Coastguard Worker  *   Data Blobs
216*cfb92d14SAndroid Build Coastguard Worker  *
217*cfb92d14SAndroid Build Coastguard Worker  *   There are two types for data blobs: "d" and "D".
218*cfb92d14SAndroid Build Coastguard Worker  *
219*cfb92d14SAndroid Build Coastguard Worker  *   -  "d" has the length of the data (in bytes) prepended to the data
220*cfb92d14SAndroid Build Coastguard Worker  *      (with the length encoded as type "S").  The size of the length
221*cfb92d14SAndroid Build Coastguard Worker  *      field is not included in the length.
222*cfb92d14SAndroid Build Coastguard Worker  *   -  "D" does not have a prepended length: the length of the data is
223*cfb92d14SAndroid Build Coastguard Worker  *      implied by the bytes remaining to be parsed.  It is an error for
224*cfb92d14SAndroid Build Coastguard Worker  *      "D" to not be the last type in a type in a type signature.
225*cfb92d14SAndroid Build Coastguard Worker  *
226*cfb92d14SAndroid Build Coastguard Worker  *   This dichotomy allows for more efficient encoding by eliminating
227*cfb92d14SAndroid Build Coastguard Worker  *   redundancy.  If the rest of the buffer is a data blob, encoding the
228*cfb92d14SAndroid Build Coastguard Worker  *   length would be redundant because we already know how many bytes are
229*cfb92d14SAndroid Build Coastguard Worker  *   in the rest of the buffer.
230*cfb92d14SAndroid Build Coastguard Worker  *
231*cfb92d14SAndroid Build Coastguard Worker  *   In some cases we use "d" even if it is the last field in a type
232*cfb92d14SAndroid Build Coastguard Worker  *   signature.  We do this to allow for us to be able to append
233*cfb92d14SAndroid Build Coastguard Worker  *   additional fields to the type signature if necessary in the future.
234*cfb92d14SAndroid Build Coastguard Worker  *   This is usually the case with embedded structs, like in the scan
235*cfb92d14SAndroid Build Coastguard Worker  *   results.
236*cfb92d14SAndroid Build Coastguard Worker  *
237*cfb92d14SAndroid Build Coastguard Worker  *   For example, let's say we have a buffer that is encoded with the
238*cfb92d14SAndroid Build Coastguard Worker  *   datatype signature of "CLLD".  In this case, it is pretty easy to
239*cfb92d14SAndroid Build Coastguard Worker  *   tell where the start and end of the data blob is: the start is 9
240*cfb92d14SAndroid Build Coastguard Worker  *   bytes from the start of the buffer, and its length is the length of
241*cfb92d14SAndroid Build Coastguard Worker  *   the buffer minus 9. (9 is the number of bytes taken up by a byte and
242*cfb92d14SAndroid Build Coastguard Worker  *   two longs)
243*cfb92d14SAndroid Build Coastguard Worker  *
244*cfb92d14SAndroid Build Coastguard Worker  *   The datatype signature "CLLDU" is illegal because we can't determine
245*cfb92d14SAndroid Build Coastguard Worker  *   where the last field (a zero-terminated UTF8 string) starts.  But the
246*cfb92d14SAndroid Build Coastguard Worker  *   datatype "CLLdU" is legal, because the parser can determine the
247*cfb92d14SAndroid Build Coastguard Worker  *   exact length of the data blob-- allowing it to know where the start
248*cfb92d14SAndroid Build Coastguard Worker  *   of the next field would be.
249*cfb92d14SAndroid Build Coastguard Worker  *
250*cfb92d14SAndroid Build Coastguard Worker  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
251*cfb92d14SAndroid Build Coastguard Worker  *
252*cfb92d14SAndroid Build Coastguard Worker  *   Structured Data
253*cfb92d14SAndroid Build Coastguard Worker  *
254*cfb92d14SAndroid Build Coastguard Worker  *   The structure data type ("t(...)") is a way of bundling together
255*cfb92d14SAndroid Build Coastguard Worker  *   several fields into a single structure.  It can be thought of as a
256*cfb92d14SAndroid Build Coastguard Worker  *   "d" type except that instead of being opaque, the fields in the
257*cfb92d14SAndroid Build Coastguard Worker  *   content are known.  This is useful for things like scan results where
258*cfb92d14SAndroid Build Coastguard Worker  *   you have substructures which are defined by different layers.
259*cfb92d14SAndroid Build Coastguard Worker  *
260*cfb92d14SAndroid Build Coastguard Worker  *   For example, consider the type signature "Lt(ES)t(6C)".  In this
261*cfb92d14SAndroid Build Coastguard Worker  *   hypothetical case, the first struct is defined by the MAC layer, and
262*cfb92d14SAndroid Build Coastguard Worker  *   the second struct is defined by the PHY layer.  Because of the use of
263*cfb92d14SAndroid Build Coastguard Worker  *   structures, we know exactly what part comes from that layer.
264*cfb92d14SAndroid Build Coastguard Worker  *   Additionally, we can add fields to each structure without introducing
265*cfb92d14SAndroid Build Coastguard Worker  *   backward compatibility problems: Data encoded as "Lt(ESU)t(6C)"
266*cfb92d14SAndroid Build Coastguard Worker  *   (Notice the extra "U") will decode just fine as "Lt(ES)t(6C)".
267*cfb92d14SAndroid Build Coastguard Worker  *   Additionally, if we don't care about the MAC layer and only care
268*cfb92d14SAndroid Build Coastguard Worker  *   about the network layer, we could parse as "Lt()t(6C)".
269*cfb92d14SAndroid Build Coastguard Worker  *
270*cfb92d14SAndroid Build Coastguard Worker  *   Note that data encoded as "Lt(ES)t(6C)" will also parse as "Ldd",
271*cfb92d14SAndroid Build Coastguard Worker  *   with the structures from both layers now being opaque data blobs.
272*cfb92d14SAndroid Build Coastguard Worker  *
273*cfb92d14SAndroid Build Coastguard Worker  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
274*cfb92d14SAndroid Build Coastguard Worker  *
275*cfb92d14SAndroid Build Coastguard Worker  *   Arrays
276*cfb92d14SAndroid Build Coastguard Worker  *
277*cfb92d14SAndroid Build Coastguard Worker  *   An array is simply a concatenated set of _n_ data encodings.  For
278*cfb92d14SAndroid Build Coastguard Worker  *   example, the type "A(6)" is simply a list of IPv6 addresses---one
279*cfb92d14SAndroid Build Coastguard Worker  *   after the other.  The type "A(6E)" likewise a concatenation of IPv6-
280*cfb92d14SAndroid Build Coastguard Worker  *   address/EUI-64 pairs.
281*cfb92d14SAndroid Build Coastguard Worker  *
282*cfb92d14SAndroid Build Coastguard Worker  *   If an array contains many fields, the fields will often be surrounded
283*cfb92d14SAndroid Build Coastguard Worker  *   by a structure ("t(...)").  This effectively prepends each item in
284*cfb92d14SAndroid Build Coastguard Worker  *   the array with its length.  This is useful for improving parsing
285*cfb92d14SAndroid Build Coastguard Worker  *   performance or to allow additional fields to be added in the future
286*cfb92d14SAndroid Build Coastguard Worker  *   in a backward compatible way.  If there is a high certainty that
287*cfb92d14SAndroid Build Coastguard Worker  *   additional fields will never be added, the struct may be omitted
288*cfb92d14SAndroid Build Coastguard Worker  *   (saving two bytes per item).
289*cfb92d14SAndroid Build Coastguard Worker  *
290*cfb92d14SAndroid Build Coastguard Worker  *   This specification does not define a way to embed an array as a field
291*cfb92d14SAndroid Build Coastguard Worker  *   alongside other fields.
292*cfb92d14SAndroid Build Coastguard Worker  *
293*cfb92d14SAndroid Build Coastguard Worker  * ---------------------------------------------------------------------------
294*cfb92d14SAndroid Build Coastguard Worker  *
295*cfb92d14SAndroid Build Coastguard Worker  *   Spinel definition compatibility guideline:
296*cfb92d14SAndroid Build Coastguard Worker  *
297*cfb92d14SAndroid Build Coastguard Worker  *   The compatibility policy for NCP versus RCP and host side are handled
298*cfb92d14SAndroid Build Coastguard Worker  *   differently in spinel.
299*cfb92d14SAndroid Build Coastguard Worker  *
300*cfb92d14SAndroid Build Coastguard Worker  *   New NCP firmware should work with an older host driver, i.e., NCP
301*cfb92d14SAndroid Build Coastguard Worker  *   implementation should remain backward compatible.
302*cfb92d14SAndroid Build Coastguard Worker  *
303*cfb92d14SAndroid Build Coastguard Worker  *    - Existing fields in the format of an already implemented spinel
304*cfb92d14SAndroid Build Coastguard Worker  *      property or command cannot change.
305*cfb92d14SAndroid Build Coastguard Worker  *
306*cfb92d14SAndroid Build Coastguard Worker  *    - New fields may be appended at the end of the format (or the end of
307*cfb92d14SAndroid Build Coastguard Worker  *      a struct) as long as the NCP implementation treats the new fields as
308*cfb92d14SAndroid Build Coastguard Worker  *      optional (i.e., a driver not aware of and therefore not using the
309*cfb92d14SAndroid Build Coastguard Worker  *      new fields should continue to function as before).
310*cfb92d14SAndroid Build Coastguard Worker  *
311*cfb92d14SAndroid Build Coastguard Worker  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
312*cfb92d14SAndroid Build Coastguard Worker  *
313*cfb92d14SAndroid Build Coastguard Worker  *   For RCP and host, the "RCP API Version" numbers are used to check the
314*cfb92d14SAndroid Build Coastguard Worker  *   compatibility between host implementation and RCP firmware. Generally,
315*cfb92d14SAndroid Build Coastguard Worker  *   a newer host side implementation would work with a range of previous
316*cfb92d14SAndroid Build Coastguard Worker  *   or older RCP firmware versions.
317*cfb92d14SAndroid Build Coastguard Worker  *
318*cfb92d14SAndroid Build Coastguard Worker  *   - SPINEL_RCP_API_VERSION specifies the current spinel RCP API version.
319*cfb92d14SAndroid Build Coastguard Worker  *     This number MUST be incremented anytime there is a change in any of RCP
320*cfb92d14SAndroid Build Coastguard Worker  *     specific spinel definitions.
321*cfb92d14SAndroid Build Coastguard Worker  *
322*cfb92d14SAndroid Build Coastguard Worker  *   - SPINEL_MIN_HOST_SUPPORTED_RCP_API_VERSION specifies the minimum spinel
323*cfb92d14SAndroid Build Coastguard Worker  *     RCP API Version which is supported by the host-side implementation.
324*cfb92d14SAndroid Build Coastguard Worker  *     To reduce the backward compatibility issues, this number should be kept
325*cfb92d14SAndroid Build Coastguard Worker  *     as constant as possible.
326*cfb92d14SAndroid Build Coastguard Worker  *
327*cfb92d14SAndroid Build Coastguard Worker  *   - On start, host implementation queries the RCP API version and accepts
328*cfb92d14SAndroid Build Coastguard Worker  *     any version starting from SPINEL_MIN_HOST_SUPPORTED_RCP_API_VERSION.
329*cfb92d14SAndroid Build Coastguard Worker  *
330*cfb92d14SAndroid Build Coastguard Worker  *   - Host implementation also queries the RCP about the minimum host RCP
331*cfb92d14SAndroid Build Coastguard Worker  *     API version it can work with, and then checks that its own version is
332*cfb92d14SAndroid Build Coastguard Worker  *     within the range.
333*cfb92d14SAndroid Build Coastguard Worker  *
334*cfb92d14SAndroid Build Coastguard Worker  *   Host and RCP compatibility guideline:
335*cfb92d14SAndroid Build Coastguard Worker  *
336*cfb92d14SAndroid Build Coastguard Worker  *   - New host spinel layer should work with an older RCP firmware, i.e., host
337*cfb92d14SAndroid Build Coastguard Worker  *     implementation should remain backward compatible.
338*cfb92d14SAndroid Build Coastguard Worker  *
339*cfb92d14SAndroid Build Coastguard Worker  *   - Existing fields in the format of an already implemented spinel
340*cfb92d14SAndroid Build Coastguard Worker  *     property or command must not change.
341*cfb92d14SAndroid Build Coastguard Worker  *
342*cfb92d14SAndroid Build Coastguard Worker  *   - New fields must be appended to the end of the existing spinel format.
343*cfb92d14SAndroid Build Coastguard Worker  *     *  New fields for new features:
344*cfb92d14SAndroid Build Coastguard Worker  *          Adding a new capability flag to the otRadioCaps to indicate the new
345*cfb92d14SAndroid Build Coastguard Worker  *          fields. The host parses the spinel format based on the pre-fetched
346*cfb92d14SAndroid Build Coastguard Worker  *          otRadioCaps. The host should be able to enable/disable the feature
347*cfb92d14SAndroid Build Coastguard Worker  *          in runtime based on the otRadioCaps. Refer to PR4919 and PR5139.
348*cfb92d14SAndroid Build Coastguard Worker  *     *  New fields for changing existing implementations:
349*cfb92d14SAndroid Build Coastguard Worker  *          This case should be avoided as much as possible. It will cause the
350*cfb92d14SAndroid Build Coastguard Worker  *          compatibility issue.
351*cfb92d14SAndroid Build Coastguard Worker  *
352*cfb92d14SAndroid Build Coastguard Worker  *   - Deprecated fields must not be removed from the spinel format and they
353*cfb92d14SAndroid Build Coastguard Worker  *     must be set to a suitable default value.
354*cfb92d14SAndroid Build Coastguard Worker  *
355*cfb92d14SAndroid Build Coastguard Worker  *   - Adding new spinel properties.
356*cfb92d14SAndroid Build Coastguard Worker  *     * If the old version RCP doesn't support the new spinel property, it
357*cfb92d14SAndroid Build Coastguard Worker  *       must return the spinel error SPINEL_STATUS_PROP_NOT_FOUND.
358*cfb92d14SAndroid Build Coastguard Worker  *
359*cfb92d14SAndroid Build Coastguard Worker  *     * If the host can handle the new spinel property by processing the error
360*cfb92d14SAndroid Build Coastguard Worker  *       SPINEL_STATUS_PROP_NOT_FOUND, the API of the new spinel property must
361*cfb92d14SAndroid Build Coastguard Worker  *       return OT_ERROR_NOT_IMPLEMENTED or default value.
362*cfb92d14SAndroid Build Coastguard Worker  *
363*cfb92d14SAndroid Build Coastguard Worker  *     * If the host can't handle the new spinel property by processing the
364*cfb92d14SAndroid Build Coastguard Worker  *       error SPINEL_STATUS_PROP_NOT_FOUND, a new capability flag must be
365*cfb92d14SAndroid Build Coastguard Worker  *       added to the otRadioCaps to indicate whether RCP supports the new
366*cfb92d14SAndroid Build Coastguard Worker  *       spinel property. The host must handle the new spinel property by
367*cfb92d14SAndroid Build Coastguard Worker  *       processing the new capability flag.
368*cfb92d14SAndroid Build Coastguard Worker  *
369*cfb92d14SAndroid Build Coastguard Worker  *   - If none of the above methods make the new functions work, increasing the
370*cfb92d14SAndroid Build Coastguard Worker  *     SPINEL_MIN_HOST_SUPPORTED_RCP_API_VERSION. This case should be avoided
371*cfb92d14SAndroid Build Coastguard Worker  *     as much as possible.
372*cfb92d14SAndroid Build Coastguard Worker  * ---------------------------------------------------------------------------
373*cfb92d14SAndroid Build Coastguard Worker  */
374*cfb92d14SAndroid Build Coastguard Worker 
375*cfb92d14SAndroid Build Coastguard Worker #ifdef SPINEL_PLATFORM_HEADER
376*cfb92d14SAndroid Build Coastguard Worker #include SPINEL_PLATFORM_HEADER
377*cfb92d14SAndroid Build Coastguard Worker #else // ifdef SPINEL_PLATFORM_HEADER
378*cfb92d14SAndroid Build Coastguard Worker #include <stdarg.h>
379*cfb92d14SAndroid Build Coastguard Worker #include <stdbool.h>
380*cfb92d14SAndroid Build Coastguard Worker #include <stdint.h>
381*cfb92d14SAndroid Build Coastguard Worker #endif // else SPINEL_PLATFORM_HEADER
382*cfb92d14SAndroid Build Coastguard Worker 
383*cfb92d14SAndroid Build Coastguard Worker // ----------------------------------------------------------------------------
384*cfb92d14SAndroid Build Coastguard Worker 
385*cfb92d14SAndroid Build Coastguard Worker #ifndef DOXYGEN_SHOULD_SKIP_THIS
386*cfb92d14SAndroid Build Coastguard Worker 
387*cfb92d14SAndroid Build Coastguard Worker #if defined(__GNUC__)
388*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_API_EXTERN extern __attribute__((visibility("default")))
389*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_API_NONNULL_ALL __attribute__((nonnull))
390*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_API_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
391*cfb92d14SAndroid Build Coastguard Worker #endif // ifdef __GNUC__
392*cfb92d14SAndroid Build Coastguard Worker 
393*cfb92d14SAndroid Build Coastguard Worker #endif // ifndef DOXYGEN_SHOULD_SKIP_THIS
394*cfb92d14SAndroid Build Coastguard Worker 
395*cfb92d14SAndroid Build Coastguard Worker #ifndef SPINEL_API_EXTERN
396*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_API_EXTERN extern
397*cfb92d14SAndroid Build Coastguard Worker #endif
398*cfb92d14SAndroid Build Coastguard Worker 
399*cfb92d14SAndroid Build Coastguard Worker #ifndef SPINEL_API_NONNULL_ALL
400*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_API_NONNULL_ALL
401*cfb92d14SAndroid Build Coastguard Worker #endif
402*cfb92d14SAndroid Build Coastguard Worker 
403*cfb92d14SAndroid Build Coastguard Worker #ifndef SPINEL_API_WARN_UNUSED_RESULT
404*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_API_WARN_UNUSED_RESULT
405*cfb92d14SAndroid Build Coastguard Worker #endif
406*cfb92d14SAndroid Build Coastguard Worker 
407*cfb92d14SAndroid Build Coastguard Worker // ----------------------------------------------------------------------------
408*cfb92d14SAndroid Build Coastguard Worker 
409*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_PROTOCOL_VERSION_THREAD_MAJOR 4
410*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_PROTOCOL_VERSION_THREAD_MINOR 3
411*cfb92d14SAndroid Build Coastguard Worker 
412*cfb92d14SAndroid Build Coastguard Worker /**
413*cfb92d14SAndroid Build Coastguard Worker  * @def SPINEL_RCP_API_VERSION
414*cfb92d14SAndroid Build Coastguard Worker  *
415*cfb92d14SAndroid Build Coastguard Worker  * The RCP API version number.
416*cfb92d14SAndroid Build Coastguard Worker  *
417*cfb92d14SAndroid Build Coastguard Worker  * This number MUST increase by one each time any of the spinel definitions used by RCP change (independent of whether
418*cfb92d14SAndroid Build Coastguard Worker  * the change is backward-compatible or not).
419*cfb92d14SAndroid Build Coastguard Worker  *
420*cfb92d14SAndroid Build Coastguard Worker  * Please see section "Spinel definition compatibility guideline" for more details.
421*cfb92d14SAndroid Build Coastguard Worker  *
422*cfb92d14SAndroid Build Coastguard Worker  */
423*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_RCP_API_VERSION 10
424*cfb92d14SAndroid Build Coastguard Worker 
425*cfb92d14SAndroid Build Coastguard Worker /**
426*cfb92d14SAndroid Build Coastguard Worker  * @def SPINEL_MIN_HOST_SUPPORTED_RCP_API_VERSION
427*cfb92d14SAndroid Build Coastguard Worker  *
428*cfb92d14SAndroid Build Coastguard Worker  * The minimum RCP API version supported by the host implementation.
429*cfb92d14SAndroid Build Coastguard Worker  *
430*cfb92d14SAndroid Build Coastguard Worker  * This number MUST increase when there is a non-compatible RCP spinel related change on host implementation.
431*cfb92d14SAndroid Build Coastguard Worker  *
432*cfb92d14SAndroid Build Coastguard Worker  * Please see section "Spinel definition compatibility guideline" for more details.
433*cfb92d14SAndroid Build Coastguard Worker  *
434*cfb92d14SAndroid Build Coastguard Worker  */
435*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_MIN_HOST_SUPPORTED_RCP_API_VERSION 4
436*cfb92d14SAndroid Build Coastguard Worker 
437*cfb92d14SAndroid Build Coastguard Worker /**
438*cfb92d14SAndroid Build Coastguard Worker  * @def SPINEL_FRAME_MAX_SIZE
439*cfb92d14SAndroid Build Coastguard Worker  *
440*cfb92d14SAndroid Build Coastguard Worker  *  The maximum size of SPINEL frame.
441*cfb92d14SAndroid Build Coastguard Worker  *
442*cfb92d14SAndroid Build Coastguard Worker  */
443*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_FRAME_MAX_SIZE 1300
444*cfb92d14SAndroid Build Coastguard Worker 
445*cfb92d14SAndroid Build Coastguard Worker /**
446*cfb92d14SAndroid Build Coastguard Worker  * @def SPINEL_FRAME_MAX_COMMAND_HEADER_SIZE
447*cfb92d14SAndroid Build Coastguard Worker  *
448*cfb92d14SAndroid Build Coastguard Worker  *  The maximum size of SPINEL command header.
449*cfb92d14SAndroid Build Coastguard Worker  *
450*cfb92d14SAndroid Build Coastguard Worker  */
451*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_FRAME_MAX_COMMAND_HEADER_SIZE 4
452*cfb92d14SAndroid Build Coastguard Worker 
453*cfb92d14SAndroid Build Coastguard Worker /**
454*cfb92d14SAndroid Build Coastguard Worker  * @def SPINEL_FRAME_MAX_PAYLOAD_SIZE
455*cfb92d14SAndroid Build Coastguard Worker  *
456*cfb92d14SAndroid Build Coastguard Worker  *  The maximum size of SPINEL command payload.
457*cfb92d14SAndroid Build Coastguard Worker  *
458*cfb92d14SAndroid Build Coastguard Worker  */
459*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_FRAME_MAX_COMMAND_PAYLOAD_SIZE (SPINEL_FRAME_MAX_SIZE - SPINEL_FRAME_MAX_COMMAND_HEADER_SIZE)
460*cfb92d14SAndroid Build Coastguard Worker 
461*cfb92d14SAndroid Build Coastguard Worker /**
462*cfb92d14SAndroid Build Coastguard Worker  * @def SPINEL_ENCRYPTER_EXTRA_DATA_SIZE
463*cfb92d14SAndroid Build Coastguard Worker  *
464*cfb92d14SAndroid Build Coastguard Worker  *  The size of extra data to be allocated for spinel frame buffer,
465*cfb92d14SAndroid Build Coastguard Worker  *  needed by Spinel Encrypter.
466*cfb92d14SAndroid Build Coastguard Worker  *
467*cfb92d14SAndroid Build Coastguard Worker  */
468*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_ENCRYPTER_EXTRA_DATA_SIZE 0
469*cfb92d14SAndroid Build Coastguard Worker 
470*cfb92d14SAndroid Build Coastguard Worker /**
471*cfb92d14SAndroid Build Coastguard Worker  * @def SPINEL_FRAME_BUFFER_SIZE
472*cfb92d14SAndroid Build Coastguard Worker  *
473*cfb92d14SAndroid Build Coastguard Worker  *  The size of buffer large enough to fit one whole spinel frame with extra data
474*cfb92d14SAndroid Build Coastguard Worker  *  needed by Spinel Encrypter.
475*cfb92d14SAndroid Build Coastguard Worker  *
476*cfb92d14SAndroid Build Coastguard Worker  */
477*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_FRAME_BUFFER_SIZE (SPINEL_FRAME_MAX_SIZE + SPINEL_ENCRYPTER_EXTRA_DATA_SIZE)
478*cfb92d14SAndroid Build Coastguard Worker 
479*cfb92d14SAndroid Build Coastguard Worker /// Macro for generating bit masks using bit index from the spec
480*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_BIT_MASK(bit_index, field_bit_count) ((1 << ((field_bit_count)-1)) >> (bit_index))
481*cfb92d14SAndroid Build Coastguard Worker 
482*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_BITS_PER_BYTE 8 // Number of bits in a byte
483*cfb92d14SAndroid Build Coastguard Worker 
484*cfb92d14SAndroid Build Coastguard Worker // ----------------------------------------------------------------------------
485*cfb92d14SAndroid Build Coastguard Worker 
486*cfb92d14SAndroid Build Coastguard Worker #if defined(__cplusplus)
487*cfb92d14SAndroid Build Coastguard Worker extern "C" {
488*cfb92d14SAndroid Build Coastguard Worker #endif
489*cfb92d14SAndroid Build Coastguard Worker 
490*cfb92d14SAndroid Build Coastguard Worker enum
491*cfb92d14SAndroid Build Coastguard Worker {
492*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_OK                       = 0,  ///< Operation has completed successfully.
493*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_FAILURE                  = 1,  ///< Operation has failed for some undefined reason.
494*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_UNIMPLEMENTED            = 2,  ///< Given operation has not been implemented.
495*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_INVALID_ARGUMENT         = 3,  ///< An argument to the operation is invalid.
496*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_INVALID_STATE            = 4,  ///< This operation is invalid for the current device state.
497*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_INVALID_COMMAND          = 5,  ///< This command is not recognized.
498*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_INVALID_INTERFACE        = 6,  ///< This interface is not supported.
499*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_INTERNAL_ERROR           = 7,  ///< An internal runtime error has occurred.
500*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_SECURITY_ERROR           = 8,  ///< A security/authentication error has occurred.
501*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_PARSE_ERROR              = 9,  ///< A error has occurred while parsing the command.
502*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_IN_PROGRESS              = 10, ///< This operation is in progress.
503*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_NOMEM                    = 11, ///< Operation prevented due to memory pressure.
504*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_BUSY                     = 12, ///< The device is currently performing a mutually exclusive operation
505*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_PROP_NOT_FOUND           = 13, ///< The given property is not recognized.
506*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_DROPPED                  = 14, ///< A/The packet was dropped.
507*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_EMPTY                    = 15, ///< The result of the operation is empty.
508*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_CMD_TOO_BIG              = 16, ///< The command was too large to fit in the internal buffer.
509*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_NO_ACK                   = 17, ///< The packet was not acknowledged.
510*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_CCA_FAILURE              = 18, ///< The packet was not sent due to a CCA failure.
511*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_ALREADY                  = 19, ///< The operation is already in progress.
512*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_ITEM_NOT_FOUND           = 20, ///< The given item could not be found.
513*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_INVALID_COMMAND_FOR_PROP = 21, ///< The given command cannot be performed on this property.
514*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_UNKNOWN_NEIGHBOR         = 22, ///< The neighbor is unknown.
515*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_NOT_CAPABLE              = 23, ///< The target is not capable of handling requested operation.
516*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESPONSE_TIMEOUT         = 24, ///< No response received from remote node
517*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_SWITCHOVER_DONE =
518*cfb92d14SAndroid Build Coastguard Worker         25, ///< Radio interface switch completed successfully (SPINEL_PROP_MULTIPAN_ACTIVE_INTERFACE)
519*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_SWITCHOVER_FAILED = 26, ///< Radio interface switch failed (SPINEL_PROP_MULTIPAN_ACTIVE_INTERFACE)
520*cfb92d14SAndroid Build Coastguard Worker 
521*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_JOIN__BEGIN = 104,
522*cfb92d14SAndroid Build Coastguard Worker 
523*cfb92d14SAndroid Build Coastguard Worker     /// Generic failure to associate with other peers.
524*cfb92d14SAndroid Build Coastguard Worker     /**
525*cfb92d14SAndroid Build Coastguard Worker      *  This status error should not be used by implementers if
526*cfb92d14SAndroid Build Coastguard Worker      *  enough information is available to determine that one of the
527*cfb92d14SAndroid Build Coastguard Worker      *  later join failure status codes would be more accurate.
528*cfb92d14SAndroid Build Coastguard Worker      *
529*cfb92d14SAndroid Build Coastguard Worker      *  \sa SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING
530*cfb92d14SAndroid Build Coastguard Worker      *  \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
531*cfb92d14SAndroid Build Coastguard Worker      */
532*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_JOIN_FAILURE = SPINEL_STATUS_JOIN__BEGIN + 0,
533*cfb92d14SAndroid Build Coastguard Worker 
534*cfb92d14SAndroid Build Coastguard Worker     /// The node found other peers but was unable to decode their packets.
535*cfb92d14SAndroid Build Coastguard Worker     /**
536*cfb92d14SAndroid Build Coastguard Worker      *  Typically this error code indicates that the network
537*cfb92d14SAndroid Build Coastguard Worker      *  key has been set incorrectly.
538*cfb92d14SAndroid Build Coastguard Worker      *
539*cfb92d14SAndroid Build Coastguard Worker      *  \sa SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING
540*cfb92d14SAndroid Build Coastguard Worker      *  \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
541*cfb92d14SAndroid Build Coastguard Worker      */
542*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_JOIN_SECURITY = SPINEL_STATUS_JOIN__BEGIN + 1,
543*cfb92d14SAndroid Build Coastguard Worker 
544*cfb92d14SAndroid Build Coastguard Worker     /// The node was unable to find any other peers on the network.
545*cfb92d14SAndroid Build Coastguard Worker     /**
546*cfb92d14SAndroid Build Coastguard Worker      *  \sa SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING
547*cfb92d14SAndroid Build Coastguard Worker      *  \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
548*cfb92d14SAndroid Build Coastguard Worker      */
549*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_JOIN_NO_PEERS = SPINEL_STATUS_JOIN__BEGIN + 2,
550*cfb92d14SAndroid Build Coastguard Worker 
551*cfb92d14SAndroid Build Coastguard Worker     /// The only potential peer nodes found are incompatible.
552*cfb92d14SAndroid Build Coastguard Worker     /**
553*cfb92d14SAndroid Build Coastguard Worker      *  \sa SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING
554*cfb92d14SAndroid Build Coastguard Worker      */
555*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_JOIN_INCOMPATIBLE = SPINEL_STATUS_JOIN__BEGIN + 3,
556*cfb92d14SAndroid Build Coastguard Worker 
557*cfb92d14SAndroid Build Coastguard Worker     /// No response in expecting time.
558*cfb92d14SAndroid Build Coastguard Worker     /**
559*cfb92d14SAndroid Build Coastguard Worker      *  \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
560*cfb92d14SAndroid Build Coastguard Worker      */
561*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_JOIN_RSP_TIMEOUT = SPINEL_STATUS_JOIN__BEGIN + 4,
562*cfb92d14SAndroid Build Coastguard Worker 
563*cfb92d14SAndroid Build Coastguard Worker     /// The node succeeds in commissioning and get the network credentials.
564*cfb92d14SAndroid Build Coastguard Worker     /**
565*cfb92d14SAndroid Build Coastguard Worker      *  \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
566*cfb92d14SAndroid Build Coastguard Worker      */
567*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_JOIN_SUCCESS = SPINEL_STATUS_JOIN__BEGIN + 5,
568*cfb92d14SAndroid Build Coastguard Worker 
569*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_JOIN__END = 112,
570*cfb92d14SAndroid Build Coastguard Worker 
571*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESET__BEGIN   = 112,
572*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESET_POWER_ON = SPINEL_STATUS_RESET__BEGIN + 0,
573*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESET_EXTERNAL = SPINEL_STATUS_RESET__BEGIN + 1,
574*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESET_SOFTWARE = SPINEL_STATUS_RESET__BEGIN + 2,
575*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESET_FAULT    = SPINEL_STATUS_RESET__BEGIN + 3,
576*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESET_CRASH    = SPINEL_STATUS_RESET__BEGIN + 4,
577*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESET_ASSERT   = SPINEL_STATUS_RESET__BEGIN + 5,
578*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESET_OTHER    = SPINEL_STATUS_RESET__BEGIN + 6,
579*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESET_UNKNOWN  = SPINEL_STATUS_RESET__BEGIN + 7,
580*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESET_WATCHDOG = SPINEL_STATUS_RESET__BEGIN + 8,
581*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_RESET__END     = 128,
582*cfb92d14SAndroid Build Coastguard Worker 
583*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_VENDOR__BEGIN = 15360,
584*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_VENDOR__END   = 16384,
585*cfb92d14SAndroid Build Coastguard Worker 
586*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_STACK_NATIVE__BEGIN = 16384,
587*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_STACK_NATIVE__END   = 81920,
588*cfb92d14SAndroid Build Coastguard Worker 
589*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_EXPERIMENTAL__BEGIN = 2000000,
590*cfb92d14SAndroid Build Coastguard Worker     SPINEL_STATUS_EXPERIMENTAL__END   = 2097152,
591*cfb92d14SAndroid Build Coastguard Worker };
592*cfb92d14SAndroid Build Coastguard Worker 
593*cfb92d14SAndroid Build Coastguard Worker typedef uint32_t spinel_status_t;
594*cfb92d14SAndroid Build Coastguard Worker 
595*cfb92d14SAndroid Build Coastguard Worker typedef enum
596*cfb92d14SAndroid Build Coastguard Worker {
597*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_ROLE_DETACHED = 0,
598*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_ROLE_CHILD    = 1,
599*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_ROLE_ROUTER   = 2,
600*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_ROLE_LEADER   = 3,
601*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_ROLE_DISABLED = 4,
602*cfb92d14SAndroid Build Coastguard Worker } spinel_net_role_t;
603*cfb92d14SAndroid Build Coastguard Worker 
604*cfb92d14SAndroid Build Coastguard Worker typedef enum
605*cfb92d14SAndroid Build Coastguard Worker {
606*cfb92d14SAndroid Build Coastguard Worker     SPINEL_IPV6_ICMP_PING_OFFLOAD_DISABLED       = 0,
607*cfb92d14SAndroid Build Coastguard Worker     SPINEL_IPV6_ICMP_PING_OFFLOAD_UNICAST_ONLY   = 1,
608*cfb92d14SAndroid Build Coastguard Worker     SPINEL_IPV6_ICMP_PING_OFFLOAD_MULTICAST_ONLY = 2,
609*cfb92d14SAndroid Build Coastguard Worker     SPINEL_IPV6_ICMP_PING_OFFLOAD_ALL            = 3,
610*cfb92d14SAndroid Build Coastguard Worker     SPINEL_IPV6_ICMP_PING_OFFLOAD_RLOC_ALOC_ONLY = 4,
611*cfb92d14SAndroid Build Coastguard Worker } spinel_ipv6_icmp_ping_offload_mode_t;
612*cfb92d14SAndroid Build Coastguard Worker 
613*cfb92d14SAndroid Build Coastguard Worker typedef enum
614*cfb92d14SAndroid Build Coastguard Worker {
615*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SCAN_STATE_IDLE     = 0,
616*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SCAN_STATE_BEACON   = 1,
617*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SCAN_STATE_ENERGY   = 2,
618*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SCAN_STATE_DISCOVER = 3,
619*cfb92d14SAndroid Build Coastguard Worker } spinel_scan_state_t;
620*cfb92d14SAndroid Build Coastguard Worker 
621*cfb92d14SAndroid Build Coastguard Worker typedef enum
622*cfb92d14SAndroid Build Coastguard Worker {
623*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MCU_POWER_STATE_ON        = 0,
624*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MCU_POWER_STATE_LOW_POWER = 1,
625*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MCU_POWER_STATE_OFF       = 2,
626*cfb92d14SAndroid Build Coastguard Worker } spinel_mcu_power_state_t;
627*cfb92d14SAndroid Build Coastguard Worker 
628*cfb92d14SAndroid Build Coastguard Worker // The `spinel_power_state_t` enumeration and `POWER_STATE`
629*cfb92d14SAndroid Build Coastguard Worker // property are deprecated. Please use `MCU_POWER_STATE`
630*cfb92d14SAndroid Build Coastguard Worker // instead.
631*cfb92d14SAndroid Build Coastguard Worker typedef enum
632*cfb92d14SAndroid Build Coastguard Worker {
633*cfb92d14SAndroid Build Coastguard Worker     SPINEL_POWER_STATE_OFFLINE    = 0,
634*cfb92d14SAndroid Build Coastguard Worker     SPINEL_POWER_STATE_DEEP_SLEEP = 1,
635*cfb92d14SAndroid Build Coastguard Worker     SPINEL_POWER_STATE_STANDBY    = 2,
636*cfb92d14SAndroid Build Coastguard Worker     SPINEL_POWER_STATE_LOW_POWER  = 3,
637*cfb92d14SAndroid Build Coastguard Worker     SPINEL_POWER_STATE_ONLINE     = 4,
638*cfb92d14SAndroid Build Coastguard Worker } spinel_power_state_t;
639*cfb92d14SAndroid Build Coastguard Worker 
640*cfb92d14SAndroid Build Coastguard Worker typedef enum
641*cfb92d14SAndroid Build Coastguard Worker {
642*cfb92d14SAndroid Build Coastguard Worker     SPINEL_HOST_POWER_STATE_OFFLINE    = 0,
643*cfb92d14SAndroid Build Coastguard Worker     SPINEL_HOST_POWER_STATE_DEEP_SLEEP = 1,
644*cfb92d14SAndroid Build Coastguard Worker     SPINEL_HOST_POWER_STATE_RESERVED   = 2,
645*cfb92d14SAndroid Build Coastguard Worker     SPINEL_HOST_POWER_STATE_LOW_POWER  = 3,
646*cfb92d14SAndroid Build Coastguard Worker     SPINEL_HOST_POWER_STATE_ONLINE     = 4,
647*cfb92d14SAndroid Build Coastguard Worker } spinel_host_power_state_t;
648*cfb92d14SAndroid Build Coastguard Worker 
649*cfb92d14SAndroid Build Coastguard Worker typedef enum
650*cfb92d14SAndroid Build Coastguard Worker {
651*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MESHCOP_JOINER_STATE_IDLE       = 0,
652*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MESHCOP_JOINER_STATE_DISCOVER   = 1,
653*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MESHCOP_JOINER_STATE_CONNECTING = 2,
654*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MESHCOP_JOINER_STATE_CONNECTED  = 3,
655*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MESHCOP_JOINER_STATE_ENTRUST    = 4,
656*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MESHCOP_JOINER_STATE_JOINED     = 5,
657*cfb92d14SAndroid Build Coastguard Worker } spinel_meshcop_joiner_state_t;
658*cfb92d14SAndroid Build Coastguard Worker 
659*cfb92d14SAndroid Build Coastguard Worker enum
660*cfb92d14SAndroid Build Coastguard Worker {
661*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_FLAG_ON_MESH       = (1 << 0),
662*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_FLAG_DEFAULT_ROUTE = (1 << 1),
663*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_FLAG_CONFIGURE     = (1 << 2),
664*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_FLAG_DHCP          = (1 << 3),
665*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_FLAG_SLAAC         = (1 << 4),
666*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_FLAG_PREFERRED     = (1 << 5),
667*cfb92d14SAndroid Build Coastguard Worker 
668*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_FLAG_PREFERENCE_OFFSET = 6,
669*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_FLAG_PREFERENCE_MASK   = (3 << SPINEL_NET_FLAG_PREFERENCE_OFFSET),
670*cfb92d14SAndroid Build Coastguard Worker };
671*cfb92d14SAndroid Build Coastguard Worker 
672*cfb92d14SAndroid Build Coastguard Worker enum
673*cfb92d14SAndroid Build Coastguard Worker {
674*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_FLAG_EXT_DP  = (1 << 6),
675*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NET_FLAG_EXT_DNS = (1 << 7),
676*cfb92d14SAndroid Build Coastguard Worker };
677*cfb92d14SAndroid Build Coastguard Worker 
678*cfb92d14SAndroid Build Coastguard Worker enum
679*cfb92d14SAndroid Build Coastguard Worker {
680*cfb92d14SAndroid Build Coastguard Worker     SPINEL_ROUTE_PREFERENCE_HIGH   = (1 << SPINEL_NET_FLAG_PREFERENCE_OFFSET),
681*cfb92d14SAndroid Build Coastguard Worker     SPINEL_ROUTE_PREFERENCE_MEDIUM = (0 << SPINEL_NET_FLAG_PREFERENCE_OFFSET),
682*cfb92d14SAndroid Build Coastguard Worker     SPINEL_ROUTE_PREFERENCE_LOW    = (3 << SPINEL_NET_FLAG_PREFERENCE_OFFSET),
683*cfb92d14SAndroid Build Coastguard Worker };
684*cfb92d14SAndroid Build Coastguard Worker 
685*cfb92d14SAndroid Build Coastguard Worker enum
686*cfb92d14SAndroid Build Coastguard Worker {
687*cfb92d14SAndroid Build Coastguard Worker     SPINEL_ROUTE_FLAG_NAT64 = (1 << 5),
688*cfb92d14SAndroid Build Coastguard Worker };
689*cfb92d14SAndroid Build Coastguard Worker 
690*cfb92d14SAndroid Build Coastguard Worker enum
691*cfb92d14SAndroid Build Coastguard Worker {
692*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_MODE_FULL_NETWORK_DATA   = (1 << 0),
693*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_MODE_FULL_THREAD_DEV     = (1 << 1),
694*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_MODE_SECURE_DATA_REQUEST = (1 << 2),
695*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_MODE_RX_ON_WHEN_IDLE     = (1 << 3),
696*cfb92d14SAndroid Build Coastguard Worker };
697*cfb92d14SAndroid Build Coastguard Worker 
698*cfb92d14SAndroid Build Coastguard Worker enum
699*cfb92d14SAndroid Build Coastguard Worker {
700*cfb92d14SAndroid Build Coastguard Worker     SPINEL_GPIO_FLAG_DIR_INPUT       = 0,
701*cfb92d14SAndroid Build Coastguard Worker     SPINEL_GPIO_FLAG_DIR_OUTPUT      = SPINEL_BIT_MASK(0, 8),
702*cfb92d14SAndroid Build Coastguard Worker     SPINEL_GPIO_FLAG_PULL_UP         = SPINEL_BIT_MASK(1, 8),
703*cfb92d14SAndroid Build Coastguard Worker     SPINEL_GPIO_FLAG_PULL_DOWN       = SPINEL_BIT_MASK(2, 8),
704*cfb92d14SAndroid Build Coastguard Worker     SPINEL_GPIO_FLAG_OPEN_DRAIN      = SPINEL_BIT_MASK(2, 8),
705*cfb92d14SAndroid Build Coastguard Worker     SPINEL_GPIO_FLAG_TRIGGER_NONE    = 0,
706*cfb92d14SAndroid Build Coastguard Worker     SPINEL_GPIO_FLAG_TRIGGER_RISING  = SPINEL_BIT_MASK(3, 8),
707*cfb92d14SAndroid Build Coastguard Worker     SPINEL_GPIO_FLAG_TRIGGER_FALLING = SPINEL_BIT_MASK(4, 8),
708*cfb92d14SAndroid Build Coastguard Worker     SPINEL_GPIO_FLAG_TRIGGER_ANY     = SPINEL_GPIO_FLAG_TRIGGER_RISING | SPINEL_GPIO_FLAG_TRIGGER_FALLING,
709*cfb92d14SAndroid Build Coastguard Worker };
710*cfb92d14SAndroid Build Coastguard Worker 
711*cfb92d14SAndroid Build Coastguard Worker enum
712*cfb92d14SAndroid Build Coastguard Worker {
713*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROTOCOL_TYPE_BOOTLOADER = 0,
714*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROTOCOL_TYPE_ZIGBEE_IP  = 2,
715*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROTOCOL_TYPE_THREAD     = 3,
716*cfb92d14SAndroid Build Coastguard Worker };
717*cfb92d14SAndroid Build Coastguard Worker 
718*cfb92d14SAndroid Build Coastguard Worker enum
719*cfb92d14SAndroid Build Coastguard Worker {
720*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MAC_PROMISCUOUS_MODE_OFF     = 0, ///< Normal MAC filtering is in place.
721*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MAC_PROMISCUOUS_MODE_NETWORK = 1, ///< All MAC packets matching network are passed up the stack.
722*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MAC_PROMISCUOUS_MODE_FULL    = 2, ///< All decoded MAC packets are passed up the stack.
723*cfb92d14SAndroid Build Coastguard Worker };
724*cfb92d14SAndroid Build Coastguard Worker 
725*cfb92d14SAndroid Build Coastguard Worker enum
726*cfb92d14SAndroid Build Coastguard Worker {
727*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_LEVEL_EMERG  = 0,
728*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_LEVEL_ALERT  = 1,
729*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_LEVEL_CRIT   = 2,
730*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_LEVEL_ERR    = 3,
731*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_LEVEL_WARN   = 4,
732*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_LEVEL_NOTICE = 5,
733*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_LEVEL_INFO   = 6,
734*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_LEVEL_DEBUG  = 7,
735*cfb92d14SAndroid Build Coastguard Worker };
736*cfb92d14SAndroid Build Coastguard Worker 
737*cfb92d14SAndroid Build Coastguard Worker enum
738*cfb92d14SAndroid Build Coastguard Worker {
739*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_NONE        = 0,
740*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_API      = 1,
741*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_MLE      = 2,
742*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_ARP      = 3,
743*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_NET_DATA = 4,
744*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_ICMP     = 5,
745*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_IP6      = 6,
746*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_TCP      = 7,
747*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_MAC      = 8,
748*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_MEM      = 9,
749*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_NCP      = 10,
750*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_MESH_COP = 11,
751*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_NET_DIAG = 12,
752*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_PLATFORM = 13,
753*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_COAP     = 14,
754*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_CLI      = 15,
755*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_CORE     = 16,
756*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_UTIL     = 17,
757*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_BBR      = 18,
758*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_MLR      = 19,
759*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_DUA      = 20,
760*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_BR       = 21,
761*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_SRP      = 22,
762*cfb92d14SAndroid Build Coastguard Worker     SPINEL_NCP_LOG_REGION_OT_DNS      = 23,
763*cfb92d14SAndroid Build Coastguard Worker };
764*cfb92d14SAndroid Build Coastguard Worker 
765*cfb92d14SAndroid Build Coastguard Worker enum
766*cfb92d14SAndroid Build Coastguard Worker {
767*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MESHCOP_COMMISSIONER_STATE_DISABLED = 0,
768*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MESHCOP_COMMISSIONER_STATE_PETITION = 1,
769*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MESHCOP_COMMISSIONER_STATE_ACTIVE   = 2,
770*cfb92d14SAndroid Build Coastguard Worker };
771*cfb92d14SAndroid Build Coastguard Worker 
772*cfb92d14SAndroid Build Coastguard Worker enum
773*cfb92d14SAndroid Build Coastguard Worker {
774*cfb92d14SAndroid Build Coastguard Worker     SPINEL_ADDRESS_CACHE_ENTRY_STATE_CACHED      = 0, // Entry is cached and in-use.
775*cfb92d14SAndroid Build Coastguard Worker     SPINEL_ADDRESS_CACHE_ENTRY_STATE_SNOOPED     = 1, // Entry is created by snoop optimization.
776*cfb92d14SAndroid Build Coastguard Worker     SPINEL_ADDRESS_CACHE_ENTRY_STATE_QUERY       = 2, // Entry represents an ongoing query for the EID.
777*cfb92d14SAndroid Build Coastguard Worker     SPINEL_ADDRESS_CACHE_ENTRY_STATE_RETRY_QUERY = 3, // Entry is in retry mode (a prior query did not  a response).
778*cfb92d14SAndroid Build Coastguard Worker };
779*cfb92d14SAndroid Build Coastguard Worker 
780*cfb92d14SAndroid Build Coastguard Worker enum
781*cfb92d14SAndroid Build Coastguard Worker {
782*cfb92d14SAndroid Build Coastguard Worker     SPINEL_RADIO_LINK_IEEE_802_15_4 = 0,
783*cfb92d14SAndroid Build Coastguard Worker     SPINEL_RADIO_LINK_TREL_UDP6     = 1,
784*cfb92d14SAndroid Build Coastguard Worker };
785*cfb92d14SAndroid Build Coastguard Worker 
786*cfb92d14SAndroid Build Coastguard Worker // Statuses that can be received as a result of:
787*cfb92d14SAndroid Build Coastguard Worker // @ref SPINEL_PROP_THREAD_LINK_METRICS_QUERY
788*cfb92d14SAndroid Build Coastguard Worker // @ref SPINEL_PROP_THREAD_LINK_METRICS_MGMT_ENH_ACK
789*cfb92d14SAndroid Build Coastguard Worker // @ref SPINEL_PROP_THREAD_LINK_METRICS_MGMT_FORWARD
790*cfb92d14SAndroid Build Coastguard Worker enum
791*cfb92d14SAndroid Build Coastguard Worker {
792*cfb92d14SAndroid Build Coastguard Worker     SPINEL_LINK_METRICS_STATUS_SUCCESS                     = 0,
793*cfb92d14SAndroid Build Coastguard Worker     SPINEL_LINK_METRICS_STATUS_CANNOT_SUPPORT_NEW_SERIES   = 1,
794*cfb92d14SAndroid Build Coastguard Worker     SPINEL_LINK_METRICS_STATUS_SERIESID_ALREADY_REGISTERED = 2,
795*cfb92d14SAndroid Build Coastguard Worker     SPINEL_LINK_METRICS_STATUS_SERIESID_NOT_RECOGNIZED     = 3,
796*cfb92d14SAndroid Build Coastguard Worker     SPINEL_LINK_METRICS_STATUS_NO_MATCHING_FRAMES_RECEIVED = 4,
797*cfb92d14SAndroid Build Coastguard Worker     SPINEL_LINK_METRICS_STATUS_OTHER_ERROR                 = 254
798*cfb92d14SAndroid Build Coastguard Worker };
799*cfb92d14SAndroid Build Coastguard Worker 
800*cfb92d14SAndroid Build Coastguard Worker // Metric ids used for:
801*cfb92d14SAndroid Build Coastguard Worker // @ref SPINEL_PROP_THREAD_LINK_METRICS_QUERY
802*cfb92d14SAndroid Build Coastguard Worker // @ref SPINEL_PROP_THREAD_LINK_METRICS_QUERY_RESULT
803*cfb92d14SAndroid Build Coastguard Worker // @ref SPINEL_PROP_THREAD_LINK_METRICS_MGMT_ENH_ACK
804*cfb92d14SAndroid Build Coastguard Worker // @ref SPINEL_PROP_THREAD_LINK_METRICS_MGMT_FORWARD
805*cfb92d14SAndroid Build Coastguard Worker // @ref SPINEL_PROP_RCP_ENH_ACK_PROBING
806*cfb92d14SAndroid Build Coastguard Worker enum
807*cfb92d14SAndroid Build Coastguard Worker {
808*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_LINK_METRIC_PDU_COUNT   = (1 << 0),
809*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_LINK_METRIC_LQI         = (1 << 1),
810*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_LINK_METRIC_LINK_MARGIN = (1 << 2),
811*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_LINK_METRIC_RSSI        = (1 << 3),
812*cfb92d14SAndroid Build Coastguard Worker };
813*cfb92d14SAndroid Build Coastguard Worker 
814*cfb92d14SAndroid Build Coastguard Worker // Frame types used for:
815*cfb92d14SAndroid Build Coastguard Worker // @ref SPINEL_PROP_THREAD_LINK_METRICS_MGMT_FORWARD
816*cfb92d14SAndroid Build Coastguard Worker enum
817*cfb92d14SAndroid Build Coastguard Worker {
818*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_FRAME_TYPE_MLE_LINK_PROBE   = (1 << 0),
819*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_FRAME_TYPE_MAC_DATA         = (1 << 1),
820*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_FRAME_TYPE_MAC_DATA_REQUEST = (1 << 2),
821*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_FRAME_TYPE_MAC_ACK          = (1 << 3),
822*cfb92d14SAndroid Build Coastguard Worker };
823*cfb92d14SAndroid Build Coastguard Worker 
824*cfb92d14SAndroid Build Coastguard Worker // Parameter ids used for:
825*cfb92d14SAndroid Build Coastguard Worker // @ref SPINEL_PROP_THREAD_MLR_REQUEST
826*cfb92d14SAndroid Build Coastguard Worker enum
827*cfb92d14SAndroid Build Coastguard Worker {
828*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_MLR_PARAMID_TIMEOUT = 0
829*cfb92d14SAndroid Build Coastguard Worker };
830*cfb92d14SAndroid Build Coastguard Worker 
831*cfb92d14SAndroid Build Coastguard Worker // Backbone Router states used for:
832*cfb92d14SAndroid Build Coastguard Worker // @ref SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_STATE
833*cfb92d14SAndroid Build Coastguard Worker enum
834*cfb92d14SAndroid Build Coastguard Worker {
835*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_BACKBONE_ROUTER_STATE_DISABLED  = 0,
836*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_BACKBONE_ROUTER_STATE_SECONDARY = 1,
837*cfb92d14SAndroid Build Coastguard Worker     SPINEL_THREAD_BACKBONE_ROUTER_STATE_PRIMARY   = 2,
838*cfb92d14SAndroid Build Coastguard Worker };
839*cfb92d14SAndroid Build Coastguard Worker 
840*cfb92d14SAndroid Build Coastguard Worker typedef enum
841*cfb92d14SAndroid Build Coastguard Worker {
842*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ITEM_STATE_TO_ADD     = 0, // Item to be added/registered.
843*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ITEM_STATE_ADDING     = 1, // Item is being added/registered.
844*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ITEM_STATE_TO_REFRESH = 2, // Item to be refreshed (re-register to renew lease).
845*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ITEM_STATE_REFRESHING = 3, // Item is being refreshed.
846*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ITEM_STATE_TO_REMOVE  = 4, // Item to be removed.
847*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ITEM_STATE_REMOVING   = 5, // Item is being removed.
848*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ITEM_STATE_REGISTERED = 6, // Item is registered with server.
849*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ITEM_STATE_REMOVED    = 7, // Item is removed.
850*cfb92d14SAndroid Build Coastguard Worker } spinel_srp_client_item_state_t;
851*cfb92d14SAndroid Build Coastguard Worker 
852*cfb92d14SAndroid Build Coastguard Worker typedef enum
853*cfb92d14SAndroid Build Coastguard Worker {
854*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ERROR_NONE             = 0, // No error.
855*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ERROR_PARSE            = 1, // Server unable to interpret due to format error.
856*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ERROR_FAILED           = 2, // Server encountered an internal failure.
857*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ERROR_NOT_FOUND        = 3, // Name that ought to exist, does not exists.
858*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ERROR_NOT_IMPLEMENTED  = 4, // Server does not support the query type.
859*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ERROR_SECURITY         = 5, // Service is not authoritative for zone.
860*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ERROR_DUPLICATED       = 6, // Some name that ought not to exist, does exist.
861*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ERROR_RESPONSE_TIMEOUT = 7, // Timed out waiting for response from server (client would retry).
862*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ERROR_INVALID_ARGS     = 8, // Invalid args (e.g., bad service name or TXT-DATA).
863*cfb92d14SAndroid Build Coastguard Worker     SPINEL_SRP_CLIENT_ERROR_NO_BUFS          = 9, // No buffer to send the SRP update message.
864*cfb92d14SAndroid Build Coastguard Worker } spinel_srp_client_error_t;
865*cfb92d14SAndroid Build Coastguard Worker 
866*cfb92d14SAndroid Build Coastguard Worker typedef struct
867*cfb92d14SAndroid Build Coastguard Worker {
868*cfb92d14SAndroid Build Coastguard Worker     uint8_t bytes[8];
869*cfb92d14SAndroid Build Coastguard Worker } spinel_eui64_t;
870*cfb92d14SAndroid Build Coastguard Worker 
871*cfb92d14SAndroid Build Coastguard Worker typedef struct
872*cfb92d14SAndroid Build Coastguard Worker {
873*cfb92d14SAndroid Build Coastguard Worker     uint8_t bytes[8];
874*cfb92d14SAndroid Build Coastguard Worker } spinel_net_xpanid_t;
875*cfb92d14SAndroid Build Coastguard Worker 
876*cfb92d14SAndroid Build Coastguard Worker typedef struct
877*cfb92d14SAndroid Build Coastguard Worker {
878*cfb92d14SAndroid Build Coastguard Worker     uint8_t bytes[16];
879*cfb92d14SAndroid Build Coastguard Worker } spinel_net_pskc_t;
880*cfb92d14SAndroid Build Coastguard Worker 
881*cfb92d14SAndroid Build Coastguard Worker typedef struct
882*cfb92d14SAndroid Build Coastguard Worker {
883*cfb92d14SAndroid Build Coastguard Worker     uint8_t bytes[6];
884*cfb92d14SAndroid Build Coastguard Worker } spinel_eui48_t;
885*cfb92d14SAndroid Build Coastguard Worker 
886*cfb92d14SAndroid Build Coastguard Worker typedef struct
887*cfb92d14SAndroid Build Coastguard Worker {
888*cfb92d14SAndroid Build Coastguard Worker     uint8_t bytes[16];
889*cfb92d14SAndroid Build Coastguard Worker } spinel_ipv6addr_t;
890*cfb92d14SAndroid Build Coastguard Worker 
891*cfb92d14SAndroid Build Coastguard Worker typedef int          spinel_ssize_t;
892*cfb92d14SAndroid Build Coastguard Worker typedef unsigned int spinel_size_t;
893*cfb92d14SAndroid Build Coastguard Worker typedef uint8_t      spinel_iid_t;
894*cfb92d14SAndroid Build Coastguard Worker typedef uint8_t      spinel_tid_t;
895*cfb92d14SAndroid Build Coastguard Worker 
896*cfb92d14SAndroid Build Coastguard Worker enum
897*cfb92d14SAndroid Build Coastguard Worker {
898*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MD_FLAG_TX        = 0x0001, //!< Packet was transmitted, not received.
899*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MD_FLAG_BAD_FCS   = 0x0004, //!< Packet was received with bad FCS
900*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MD_FLAG_DUPE      = 0x0008, //!< Packet seems to be a duplicate
901*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MD_FLAG_ACKED_FP  = 0x0010, //!< Packet was acknowledged with frame pending set
902*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MD_FLAG_ACKED_SEC = 0x0020, //!< Packet was acknowledged with secure enhance ACK
903*cfb92d14SAndroid Build Coastguard Worker     SPINEL_MD_FLAG_RESERVED  = 0xFFC2, //!< Flags reserved for future use.
904*cfb92d14SAndroid Build Coastguard Worker };
905*cfb92d14SAndroid Build Coastguard Worker 
906*cfb92d14SAndroid Build Coastguard Worker enum
907*cfb92d14SAndroid Build Coastguard Worker {
908*cfb92d14SAndroid Build Coastguard Worker     SPINEL_RESET_PLATFORM   = 1,
909*cfb92d14SAndroid Build Coastguard Worker     SPINEL_RESET_STACK      = 2,
910*cfb92d14SAndroid Build Coastguard Worker     SPINEL_RESET_BOOTLOADER = 3,
911*cfb92d14SAndroid Build Coastguard Worker };
912*cfb92d14SAndroid Build Coastguard Worker 
913*cfb92d14SAndroid Build Coastguard Worker enum
914*cfb92d14SAndroid Build Coastguard Worker {
915*cfb92d14SAndroid Build Coastguard Worker     /**
916*cfb92d14SAndroid Build Coastguard Worker      * No-Operation command (Host -> NCP)
917*cfb92d14SAndroid Build Coastguard Worker      *
918*cfb92d14SAndroid Build Coastguard Worker      * Encoding: Empty
919*cfb92d14SAndroid Build Coastguard Worker      *
920*cfb92d14SAndroid Build Coastguard Worker      * Induces the NCP to send a success status back to the host. This is
921*cfb92d14SAndroid Build Coastguard Worker      * primarily used for liveliness checks. The command payload for this
922*cfb92d14SAndroid Build Coastguard Worker      * command SHOULD be empty.
923*cfb92d14SAndroid Build Coastguard Worker      *
924*cfb92d14SAndroid Build Coastguard Worker      * There is no error condition for this command.
925*cfb92d14SAndroid Build Coastguard Worker      *
926*cfb92d14SAndroid Build Coastguard Worker      */
927*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_NOOP = 0,
928*cfb92d14SAndroid Build Coastguard Worker 
929*cfb92d14SAndroid Build Coastguard Worker     /**
930*cfb92d14SAndroid Build Coastguard Worker      * Reset NCP command (Host -> NCP)
931*cfb92d14SAndroid Build Coastguard Worker      *
932*cfb92d14SAndroid Build Coastguard Worker      * Encoding: Empty or `C`
933*cfb92d14SAndroid Build Coastguard Worker      *
934*cfb92d14SAndroid Build Coastguard Worker      * Causes the NCP to perform a software reset. Due to the nature of
935*cfb92d14SAndroid Build Coastguard Worker      * this command, the TID is ignored. The host should instead wait
936*cfb92d14SAndroid Build Coastguard Worker      * for a `CMD_PROP_VALUE_IS` command from the NCP indicating
937*cfb92d14SAndroid Build Coastguard Worker      * `PROP_LAST_STATUS` has been set to `STATUS_RESET_SOFTWARE`.
938*cfb92d14SAndroid Build Coastguard Worker      *
939*cfb92d14SAndroid Build Coastguard Worker      * The optional command payload specifies the reset type, can be
940*cfb92d14SAndroid Build Coastguard Worker      * `SPINEL_RESET_PLATFORM`, `SPINEL_RESET_STACK`, or
941*cfb92d14SAndroid Build Coastguard Worker      * `SPINEL_RESET_BOOTLOADER`.
942*cfb92d14SAndroid Build Coastguard Worker      *
943*cfb92d14SAndroid Build Coastguard Worker      * Defaults to stack reset if unspecified.
944*cfb92d14SAndroid Build Coastguard Worker      *
945*cfb92d14SAndroid Build Coastguard Worker      * If an error occurs, the value of `PROP_LAST_STATUS` will be emitted
946*cfb92d14SAndroid Build Coastguard Worker      * instead with the value set to the generated status code for the error.
947*cfb92d14SAndroid Build Coastguard Worker      *
948*cfb92d14SAndroid Build Coastguard Worker      */
949*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_RESET = 1,
950*cfb92d14SAndroid Build Coastguard Worker 
951*cfb92d14SAndroid Build Coastguard Worker     /**
952*cfb92d14SAndroid Build Coastguard Worker      * Get property value command (Host -> NCP)
953*cfb92d14SAndroid Build Coastguard Worker      *
954*cfb92d14SAndroid Build Coastguard Worker      * Encoding: `i`
955*cfb92d14SAndroid Build Coastguard Worker      *   `i` : Property Id
956*cfb92d14SAndroid Build Coastguard Worker      *
957*cfb92d14SAndroid Build Coastguard Worker      * Causes the NCP to emit a `CMD_PROP_VALUE_IS` command for the
958*cfb92d14SAndroid Build Coastguard Worker      * given property identifier.
959*cfb92d14SAndroid Build Coastguard Worker      *
960*cfb92d14SAndroid Build Coastguard Worker      * The payload for this command is the property identifier encoded
961*cfb92d14SAndroid Build Coastguard Worker      * in the packed unsigned integer format `i`.
962*cfb92d14SAndroid Build Coastguard Worker      *
963*cfb92d14SAndroid Build Coastguard Worker      * If an error occurs, the value of `PROP_LAST_STATUS` will be emitted
964*cfb92d14SAndroid Build Coastguard Worker      * instead with the value set to the generated status code for the error.
965*cfb92d14SAndroid Build Coastguard Worker      *
966*cfb92d14SAndroid Build Coastguard Worker      */
967*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PROP_VALUE_GET = 2,
968*cfb92d14SAndroid Build Coastguard Worker 
969*cfb92d14SAndroid Build Coastguard Worker     /**
970*cfb92d14SAndroid Build Coastguard Worker      * Set property value command (Host -> NCP)
971*cfb92d14SAndroid Build Coastguard Worker      *
972*cfb92d14SAndroid Build Coastguard Worker      * Encoding: `iD`
973*cfb92d14SAndroid Build Coastguard Worker      *   `i` : Property Id
974*cfb92d14SAndroid Build Coastguard Worker      *   `D` : Value (encoding depends on the property)
975*cfb92d14SAndroid Build Coastguard Worker      *
976*cfb92d14SAndroid Build Coastguard Worker      * Instructs the NCP to set the given property to the specific given
977*cfb92d14SAndroid Build Coastguard Worker      * value, replacing any previous value.
978*cfb92d14SAndroid Build Coastguard Worker      *
979*cfb92d14SAndroid Build Coastguard Worker      * The payload for this command is the property identifier encoded in the
980*cfb92d14SAndroid Build Coastguard Worker      * packed unsigned integer format, followed by the property value. The
981*cfb92d14SAndroid Build Coastguard Worker      * exact format of the property value is defined by the property.
982*cfb92d14SAndroid Build Coastguard Worker      *
983*cfb92d14SAndroid Build Coastguard Worker      * On success a `CMD_PROP_VALUE_IS` command is emitted either for the
984*cfb92d14SAndroid Build Coastguard Worker      * given property identifier with the set value, or for `PROP_LAST_STATUS`
985*cfb92d14SAndroid Build Coastguard Worker      * with value `LAST_STATUS_OK`.
986*cfb92d14SAndroid Build Coastguard Worker      *
987*cfb92d14SAndroid Build Coastguard Worker      * If an error occurs, the value of `PROP_LAST_STATUS` will be emitted
988*cfb92d14SAndroid Build Coastguard Worker      * with the value set to the generated status code for the error.
989*cfb92d14SAndroid Build Coastguard Worker      *
990*cfb92d14SAndroid Build Coastguard Worker      */
991*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PROP_VALUE_SET = 3,
992*cfb92d14SAndroid Build Coastguard Worker 
993*cfb92d14SAndroid Build Coastguard Worker     /**
994*cfb92d14SAndroid Build Coastguard Worker      * Insert value into property command (Host -> NCP)
995*cfb92d14SAndroid Build Coastguard Worker      *
996*cfb92d14SAndroid Build Coastguard Worker      * Encoding: `iD`
997*cfb92d14SAndroid Build Coastguard Worker      *   `i` : Property Id
998*cfb92d14SAndroid Build Coastguard Worker      *   `D` : Value (encoding depends on the property)
999*cfb92d14SAndroid Build Coastguard Worker      *
1000*cfb92d14SAndroid Build Coastguard Worker      * Instructs the NCP to insert the given value into a list-oriented
1001*cfb92d14SAndroid Build Coastguard Worker      * property without removing other items in the list. The resulting order
1002*cfb92d14SAndroid Build Coastguard Worker      * of items in the list is defined by the individual property being
1003*cfb92d14SAndroid Build Coastguard Worker      * operated on.
1004*cfb92d14SAndroid Build Coastguard Worker      *
1005*cfb92d14SAndroid Build Coastguard Worker      * The payload for this command is the property identifier encoded in the
1006*cfb92d14SAndroid Build Coastguard Worker      * packed unsigned integer format, followed by the value to be inserted.
1007*cfb92d14SAndroid Build Coastguard Worker      * The exact format of the value is defined by the property.
1008*cfb92d14SAndroid Build Coastguard Worker      *
1009*cfb92d14SAndroid Build Coastguard Worker      * If the type signature of the property consists of a single structure
1010*cfb92d14SAndroid Build Coastguard Worker      * enclosed by an array `A(t(...))`, then the contents of value MUST
1011*cfb92d14SAndroid Build Coastguard Worker      * contain the contents of the structure (`...`) rather than the
1012*cfb92d14SAndroid Build Coastguard Worker      * serialization of the whole item (`t(...)`).  Specifically, the length
1013*cfb92d14SAndroid Build Coastguard Worker      * of the structure MUST NOT be prepended to value. This helps to
1014*cfb92d14SAndroid Build Coastguard Worker      * eliminate redundant data.
1015*cfb92d14SAndroid Build Coastguard Worker      *
1016*cfb92d14SAndroid Build Coastguard Worker      * On success, either a `CMD_PROP_VALUE_INSERTED` command is emitted for
1017*cfb92d14SAndroid Build Coastguard Worker      * the given property, or a `CMD_PROP_VALUE_IS` command is emitted of
1018*cfb92d14SAndroid Build Coastguard Worker      * property `PROP_LAST_STATUS` with value `LAST_STATUS_OK`.
1019*cfb92d14SAndroid Build Coastguard Worker      *
1020*cfb92d14SAndroid Build Coastguard Worker      * If an error occurs, the value of `PROP_LAST_STATUS` will be emitted
1021*cfb92d14SAndroid Build Coastguard Worker      * with the value set to the generated status code for the error.
1022*cfb92d14SAndroid Build Coastguard Worker      *
1023*cfb92d14SAndroid Build Coastguard Worker      */
1024*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PROP_VALUE_INSERT = 4,
1025*cfb92d14SAndroid Build Coastguard Worker 
1026*cfb92d14SAndroid Build Coastguard Worker     /**
1027*cfb92d14SAndroid Build Coastguard Worker      * Remove value from property command (Host -> NCP)
1028*cfb92d14SAndroid Build Coastguard Worker      *
1029*cfb92d14SAndroid Build Coastguard Worker      * Encoding: `iD`
1030*cfb92d14SAndroid Build Coastguard Worker      *   `i` : Property Id
1031*cfb92d14SAndroid Build Coastguard Worker      *   `D` : Value (encoding depends on the property)
1032*cfb92d14SAndroid Build Coastguard Worker 
1033*cfb92d14SAndroid Build Coastguard Worker      * Instructs the NCP to remove the given value from a list-oriented property,
1034*cfb92d14SAndroid Build Coastguard Worker      * without affecting other items in the list. The resulting order of items
1035*cfb92d14SAndroid Build Coastguard Worker      * in the list is defined by the individual property being operated on.
1036*cfb92d14SAndroid Build Coastguard Worker      *
1037*cfb92d14SAndroid Build Coastguard Worker      * Note that this command operates by value, not by index!
1038*cfb92d14SAndroid Build Coastguard Worker      *
1039*cfb92d14SAndroid Build Coastguard Worker      * The payload for this command is the property identifier encoded in the
1040*cfb92d14SAndroid Build Coastguard Worker      * packed unsigned integer format, followed by the value to be removed. The
1041*cfb92d14SAndroid Build Coastguard Worker      * exact format of the value is defined by the property.
1042*cfb92d14SAndroid Build Coastguard Worker      *
1043*cfb92d14SAndroid Build Coastguard Worker      * If the type signature of the property consists of a single structure
1044*cfb92d14SAndroid Build Coastguard Worker      * enclosed by an array `A(t(...))`, then the contents of value MUST contain
1045*cfb92d14SAndroid Build Coastguard Worker      * the contents of the structure (`...`) rather than the serialization of the
1046*cfb92d14SAndroid Build Coastguard Worker      * whole item (`t(...)`).  Specifically, the length of the structure MUST NOT
1047*cfb92d14SAndroid Build Coastguard Worker      * be prepended to `VALUE`. This helps to eliminate redundant data.
1048*cfb92d14SAndroid Build Coastguard Worker      *
1049*cfb92d14SAndroid Build Coastguard Worker      * On success, either a `CMD_PROP_VALUE_REMOVED` command is emitted for the
1050*cfb92d14SAndroid Build Coastguard Worker      * given property, or a `CMD_PROP_VALUE_IS` command is emitted of property
1051*cfb92d14SAndroid Build Coastguard Worker      * `PROP_LAST_STATUS` with value `LAST_STATUS_OK`.
1052*cfb92d14SAndroid Build Coastguard Worker      *
1053*cfb92d14SAndroid Build Coastguard Worker      * If an error occurs, the value of `PROP_LAST_STATUS` will be emitted
1054*cfb92d14SAndroid Build Coastguard Worker      * with the value set to the generated status code for the error.
1055*cfb92d14SAndroid Build Coastguard Worker      *
1056*cfb92d14SAndroid Build Coastguard Worker      */
1057*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PROP_VALUE_REMOVE = 5,
1058*cfb92d14SAndroid Build Coastguard Worker 
1059*cfb92d14SAndroid Build Coastguard Worker     /**
1060*cfb92d14SAndroid Build Coastguard Worker      * Property value notification command (NCP -> Host)
1061*cfb92d14SAndroid Build Coastguard Worker      *
1062*cfb92d14SAndroid Build Coastguard Worker      * Encoding: `iD`
1063*cfb92d14SAndroid Build Coastguard Worker      *   `i` : Property Id
1064*cfb92d14SAndroid Build Coastguard Worker      *   `D` : Value (encoding depends on the property)
1065*cfb92d14SAndroid Build Coastguard Worker      *
1066*cfb92d14SAndroid Build Coastguard Worker      * This command can be sent by the NCP in response to a previous command
1067*cfb92d14SAndroid Build Coastguard Worker      * from the host, or it can be sent by the NCP in an unsolicited fashion
1068*cfb92d14SAndroid Build Coastguard Worker      * to notify the host of various state changes asynchronously.
1069*cfb92d14SAndroid Build Coastguard Worker      *
1070*cfb92d14SAndroid Build Coastguard Worker      * The payload for this command is the property identifier encoded in the
1071*cfb92d14SAndroid Build Coastguard Worker      * packed unsigned integer format, followed by the current value of the
1072*cfb92d14SAndroid Build Coastguard Worker      * given property.
1073*cfb92d14SAndroid Build Coastguard Worker      *
1074*cfb92d14SAndroid Build Coastguard Worker      */
1075*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PROP_VALUE_IS = 6,
1076*cfb92d14SAndroid Build Coastguard Worker 
1077*cfb92d14SAndroid Build Coastguard Worker     /**
1078*cfb92d14SAndroid Build Coastguard Worker      * Property value insertion notification command (NCP -> Host)
1079*cfb92d14SAndroid Build Coastguard Worker      *
1080*cfb92d14SAndroid Build Coastguard Worker      * Encoding:`iD`
1081*cfb92d14SAndroid Build Coastguard Worker      *   `i` : Property Id
1082*cfb92d14SAndroid Build Coastguard Worker      *   `D` : Value (encoding depends on the property)
1083*cfb92d14SAndroid Build Coastguard Worker      *
1084*cfb92d14SAndroid Build Coastguard Worker      * This command can be sent by the NCP in response to the
1085*cfb92d14SAndroid Build Coastguard Worker      * `CMD_PROP_VALUE_INSERT` command, or it can be sent by the NCP in an
1086*cfb92d14SAndroid Build Coastguard Worker      * unsolicited fashion to notify the host of various state changes
1087*cfb92d14SAndroid Build Coastguard Worker      * asynchronously.
1088*cfb92d14SAndroid Build Coastguard Worker      *
1089*cfb92d14SAndroid Build Coastguard Worker      * The payload for this command is the property identifier encoded in the
1090*cfb92d14SAndroid Build Coastguard Worker      * packed unsigned integer format, followed by the value that was inserted
1091*cfb92d14SAndroid Build Coastguard Worker      * into the given property.
1092*cfb92d14SAndroid Build Coastguard Worker      *
1093*cfb92d14SAndroid Build Coastguard Worker      * If the type signature of the property specified by property id consists
1094*cfb92d14SAndroid Build Coastguard Worker      * of a single structure enclosed by an array (`A(t(...))`), then the
1095*cfb92d14SAndroid Build Coastguard Worker      * contents of value MUST contain the contents of the structure (`...`)
1096*cfb92d14SAndroid Build Coastguard Worker      * rather than the serialization of the whole item (`t(...)`). Specifically,
1097*cfb92d14SAndroid Build Coastguard Worker      * the length of the structure MUST NOT be prepended to `VALUE`. This
1098*cfb92d14SAndroid Build Coastguard Worker      * helps to eliminate redundant data.
1099*cfb92d14SAndroid Build Coastguard Worker      *
1100*cfb92d14SAndroid Build Coastguard Worker      * The resulting order of items in the list is defined by the given
1101*cfb92d14SAndroid Build Coastguard Worker      * property.
1102*cfb92d14SAndroid Build Coastguard Worker      *
1103*cfb92d14SAndroid Build Coastguard Worker      */
1104*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PROP_VALUE_INSERTED = 7,
1105*cfb92d14SAndroid Build Coastguard Worker 
1106*cfb92d14SAndroid Build Coastguard Worker     /**
1107*cfb92d14SAndroid Build Coastguard Worker      * Property value removal notification command (NCP -> Host)
1108*cfb92d14SAndroid Build Coastguard Worker      *
1109*cfb92d14SAndroid Build Coastguard Worker      * Encoding: `iD`
1110*cfb92d14SAndroid Build Coastguard Worker      *   `i` : Property Id
1111*cfb92d14SAndroid Build Coastguard Worker      *   `D` : Value (encoding depends on the property)
1112*cfb92d14SAndroid Build Coastguard Worker      *
1113*cfb92d14SAndroid Build Coastguard Worker      * This command can be sent by the NCP in response to the
1114*cfb92d14SAndroid Build Coastguard Worker      * `CMD_PROP_VALUE_REMOVE` command, or it can be sent by the NCP in an
1115*cfb92d14SAndroid Build Coastguard Worker      * unsolicited fashion to notify the host of various state changes
1116*cfb92d14SAndroid Build Coastguard Worker      * asynchronously.
1117*cfb92d14SAndroid Build Coastguard Worker      *
1118*cfb92d14SAndroid Build Coastguard Worker      * Note that this command operates by value, not by index!
1119*cfb92d14SAndroid Build Coastguard Worker      *
1120*cfb92d14SAndroid Build Coastguard Worker      * The payload for this command is the property identifier encoded in the
1121*cfb92d14SAndroid Build Coastguard Worker      * packed unsigned integer format described in followed by the value that
1122*cfb92d14SAndroid Build Coastguard Worker      * was removed from the given property.
1123*cfb92d14SAndroid Build Coastguard Worker      *
1124*cfb92d14SAndroid Build Coastguard Worker      * If the type signature of the property specified by property id consists
1125*cfb92d14SAndroid Build Coastguard Worker      * of a single structure enclosed by an array (`A(t(...))`), then the
1126*cfb92d14SAndroid Build Coastguard Worker      * contents of value MUST contain the contents of the structure (`...`)
1127*cfb92d14SAndroid Build Coastguard Worker      * rather than the serialization of the whole item (`t(...)`).  Specifically,
1128*cfb92d14SAndroid Build Coastguard Worker      * the length of the structure MUST NOT be prepended to `VALUE`. This
1129*cfb92d14SAndroid Build Coastguard Worker      * helps to eliminate redundant data.
1130*cfb92d14SAndroid Build Coastguard Worker      *
1131*cfb92d14SAndroid Build Coastguard Worker      * The resulting order of items in the list is defined by the given
1132*cfb92d14SAndroid Build Coastguard Worker      * property.
1133*cfb92d14SAndroid Build Coastguard Worker      *
1134*cfb92d14SAndroid Build Coastguard Worker      */
1135*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PROP_VALUE_REMOVED = 8,
1136*cfb92d14SAndroid Build Coastguard Worker 
1137*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_NET_SAVE = 9, // Deprecated
1138*cfb92d14SAndroid Build Coastguard Worker 
1139*cfb92d14SAndroid Build Coastguard Worker     /**
1140*cfb92d14SAndroid Build Coastguard Worker      * Clear saved network settings command (Host -> NCP)
1141*cfb92d14SAndroid Build Coastguard Worker      *
1142*cfb92d14SAndroid Build Coastguard Worker      * Encoding: Empty
1143*cfb92d14SAndroid Build Coastguard Worker      *
1144*cfb92d14SAndroid Build Coastguard Worker      * Erases all network credentials and state from non-volatile memory.
1145*cfb92d14SAndroid Build Coastguard Worker      *
1146*cfb92d14SAndroid Build Coastguard Worker      * This operation affects non-volatile memory only. The current network
1147*cfb92d14SAndroid Build Coastguard Worker      * information stored in volatile memory is unaffected.
1148*cfb92d14SAndroid Build Coastguard Worker      *
1149*cfb92d14SAndroid Build Coastguard Worker      * The response to this command is always a `CMD_PROP_VALUE_IS` for
1150*cfb92d14SAndroid Build Coastguard Worker      * `PROP_LAST_STATUS`, indicating the result of the operation.
1151*cfb92d14SAndroid Build Coastguard Worker      *
1152*cfb92d14SAndroid Build Coastguard Worker      */
1153*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_NET_CLEAR = 10,
1154*cfb92d14SAndroid Build Coastguard Worker 
1155*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_NET_RECALL = 11, // Deprecated
1156*cfb92d14SAndroid Build Coastguard Worker 
1157*cfb92d14SAndroid Build Coastguard Worker     /**
1158*cfb92d14SAndroid Build Coastguard Worker      * Host buffer offload is an optional NCP capability that, when
1159*cfb92d14SAndroid Build Coastguard Worker      * present, allows the NCP to store data buffers on the host processor
1160*cfb92d14SAndroid Build Coastguard Worker      * that can be recalled at a later time.
1161*cfb92d14SAndroid Build Coastguard Worker      *
1162*cfb92d14SAndroid Build Coastguard Worker      * The presence of this feature can be detected by the host by
1163*cfb92d14SAndroid Build Coastguard Worker      * checking for the presence of the `CAP_HBO`
1164*cfb92d14SAndroid Build Coastguard Worker      * capability in `PROP_CAPS`.
1165*cfb92d14SAndroid Build Coastguard Worker      *
1166*cfb92d14SAndroid Build Coastguard Worker      * This feature is not currently supported on OpenThread.
1167*cfb92d14SAndroid Build Coastguard Worker      *
1168*cfb92d14SAndroid Build Coastguard Worker      */
1169*cfb92d14SAndroid Build Coastguard Worker 
1170*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_HBO_OFFLOAD   = 12,
1171*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_HBO_RECLAIM   = 13,
1172*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_HBO_DROP      = 14,
1173*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_HBO_OFFLOADED = 15,
1174*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_HBO_RECLAIMED = 16,
1175*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_HBO_DROPPED   = 17,
1176*cfb92d14SAndroid Build Coastguard Worker 
1177*cfb92d14SAndroid Build Coastguard Worker     /**
1178*cfb92d14SAndroid Build Coastguard Worker      * Peek command (Host -> NCP)
1179*cfb92d14SAndroid Build Coastguard Worker      *
1180*cfb92d14SAndroid Build Coastguard Worker      * Encoding: `LU`
1181*cfb92d14SAndroid Build Coastguard Worker      *   `L` : The address to peek
1182*cfb92d14SAndroid Build Coastguard Worker      *   `U` : Number of bytes to read
1183*cfb92d14SAndroid Build Coastguard Worker      *
1184*cfb92d14SAndroid Build Coastguard Worker      * This command allows the NCP to fetch values from the RAM of the NCP
1185*cfb92d14SAndroid Build Coastguard Worker      * for debugging purposes. Upon success, `CMD_PEEK_RET` is sent from the
1186*cfb92d14SAndroid Build Coastguard Worker      * NCP to the host. Upon failure, `PROP_LAST_STATUS` is emitted with
1187*cfb92d14SAndroid Build Coastguard Worker      * the appropriate error indication.
1188*cfb92d14SAndroid Build Coastguard Worker      *
1189*cfb92d14SAndroid Build Coastguard Worker      * The NCP MAY prevent certain regions of memory from being accessed.
1190*cfb92d14SAndroid Build Coastguard Worker      *
1191*cfb92d14SAndroid Build Coastguard Worker      * This command requires the capability `CAP_PEEK_POKE` to be present.
1192*cfb92d14SAndroid Build Coastguard Worker      *
1193*cfb92d14SAndroid Build Coastguard Worker      */
1194*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PEEK = 18,
1195*cfb92d14SAndroid Build Coastguard Worker 
1196*cfb92d14SAndroid Build Coastguard Worker     /**
1197*cfb92d14SAndroid Build Coastguard Worker      * Peek return command (NCP -> Host)
1198*cfb92d14SAndroid Build Coastguard Worker      *
1199*cfb92d14SAndroid Build Coastguard Worker      * Encoding: `LUD`
1200*cfb92d14SAndroid Build Coastguard Worker      *   `L` : The address peeked
1201*cfb92d14SAndroid Build Coastguard Worker      *   `U` : Number of bytes read
1202*cfb92d14SAndroid Build Coastguard Worker      *   `D` : Memory content
1203*cfb92d14SAndroid Build Coastguard Worker      *
1204*cfb92d14SAndroid Build Coastguard Worker      * This command contains the contents of memory that was requested by
1205*cfb92d14SAndroid Build Coastguard Worker      * a previous call to `CMD_PEEK`.
1206*cfb92d14SAndroid Build Coastguard Worker      *
1207*cfb92d14SAndroid Build Coastguard Worker      * This command requires the capability `CAP_PEEK_POKE` to be present.
1208*cfb92d14SAndroid Build Coastguard Worker      *
1209*cfb92d14SAndroid Build Coastguard Worker      */
1210*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PEEK_RET = 19,
1211*cfb92d14SAndroid Build Coastguard Worker 
1212*cfb92d14SAndroid Build Coastguard Worker     /**
1213*cfb92d14SAndroid Build Coastguard Worker      * Poke command (Host -> NCP)
1214*cfb92d14SAndroid Build Coastguard Worker      *
1215*cfb92d14SAndroid Build Coastguard Worker      * Encoding: `LUD`
1216*cfb92d14SAndroid Build Coastguard Worker      *   `L` : The address to be poked
1217*cfb92d14SAndroid Build Coastguard Worker      *   `U` : Number of bytes to write
1218*cfb92d14SAndroid Build Coastguard Worker      *   `D` : Content to write
1219*cfb92d14SAndroid Build Coastguard Worker      *
1220*cfb92d14SAndroid Build Coastguard Worker      * This command writes the bytes to the specified memory address
1221*cfb92d14SAndroid Build Coastguard Worker      * for debugging purposes.
1222*cfb92d14SAndroid Build Coastguard Worker      *
1223*cfb92d14SAndroid Build Coastguard Worker      * This command requires the capability `CAP_PEEK_POKE` to be present.
1224*cfb92d14SAndroid Build Coastguard Worker      *
1225*cfb92d14SAndroid Build Coastguard Worker      */
1226*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_POKE = 20,
1227*cfb92d14SAndroid Build Coastguard Worker 
1228*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PROP_VALUE_MULTI_GET = 21,
1229*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PROP_VALUE_MULTI_SET = 22,
1230*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_PROP_VALUES_ARE      = 23,
1231*cfb92d14SAndroid Build Coastguard Worker 
1232*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_NEST__BEGIN = 15296,
1233*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_NEST__END   = 15360,
1234*cfb92d14SAndroid Build Coastguard Worker 
1235*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_VENDOR__BEGIN = 15360,
1236*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_VENDOR__END   = 16384,
1237*cfb92d14SAndroid Build Coastguard Worker 
1238*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_EXPERIMENTAL__BEGIN = 2000000,
1239*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CMD_EXPERIMENTAL__END   = 2097152,
1240*cfb92d14SAndroid Build Coastguard Worker };
1241*cfb92d14SAndroid Build Coastguard Worker 
1242*cfb92d14SAndroid Build Coastguard Worker typedef uint32_t spinel_command_t;
1243*cfb92d14SAndroid Build Coastguard Worker 
1244*cfb92d14SAndroid Build Coastguard Worker enum
1245*cfb92d14SAndroid Build Coastguard Worker {
1246*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_LOCK       = 1,
1247*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_NET_SAVE   = 2,
1248*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_HBO        = 3,
1249*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_POWER_SAVE = 4,
1250*cfb92d14SAndroid Build Coastguard Worker 
1251*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_COUNTERS   = 5,
1252*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_JAM_DETECT = 6,
1253*cfb92d14SAndroid Build Coastguard Worker 
1254*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_PEEK_POKE = 7,
1255*cfb92d14SAndroid Build Coastguard Worker 
1256*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_WRITABLE_RAW_STREAM = 8,
1257*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_GPIO                = 9,
1258*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_TRNG                = 10,
1259*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_CMD_MULTI           = 11,
1260*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_UNSOL_UPDATE_FILTER = 12,
1261*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_MCU_POWER_STATE     = 13,
1262*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_PCAP                = 14,
1263*cfb92d14SAndroid Build Coastguard Worker 
1264*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4__BEGIN        = 16,
1265*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4_2003          = (SPINEL_CAP_802_15_4__BEGIN + 0),
1266*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4_2006          = (SPINEL_CAP_802_15_4__BEGIN + 1),
1267*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4_2011          = (SPINEL_CAP_802_15_4__BEGIN + 2),
1268*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4_PIB           = (SPINEL_CAP_802_15_4__BEGIN + 5),
1269*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4_2450MHZ_OQPSK = (SPINEL_CAP_802_15_4__BEGIN + 8),
1270*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4_915MHZ_OQPSK  = (SPINEL_CAP_802_15_4__BEGIN + 9),
1271*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4_868MHZ_OQPSK  = (SPINEL_CAP_802_15_4__BEGIN + 10),
1272*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4_915MHZ_BPSK   = (SPINEL_CAP_802_15_4__BEGIN + 11),
1273*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4_868MHZ_BPSK   = (SPINEL_CAP_802_15_4__BEGIN + 12),
1274*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4_915MHZ_ASK    = (SPINEL_CAP_802_15_4__BEGIN + 13),
1275*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4_868MHZ_ASK    = (SPINEL_CAP_802_15_4__BEGIN + 14),
1276*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_802_15_4__END          = 32,
1277*cfb92d14SAndroid Build Coastguard Worker 
1278*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_CONFIG__BEGIN = 32,
1279*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_CONFIG_FTD    = (SPINEL_CAP_CONFIG__BEGIN + 0),
1280*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_CONFIG_MTD    = (SPINEL_CAP_CONFIG__BEGIN + 1),
1281*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_CONFIG_RADIO  = (SPINEL_CAP_CONFIG__BEGIN + 2),
1282*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_CONFIG__END   = 40,
1283*cfb92d14SAndroid Build Coastguard Worker 
1284*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_ROLE__BEGIN = 48,
1285*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_ROLE_ROUTER = (SPINEL_CAP_ROLE__BEGIN + 0),
1286*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_ROLE_SLEEPY = (SPINEL_CAP_ROLE__BEGIN + 1),
1287*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_ROLE__END   = 52,
1288*cfb92d14SAndroid Build Coastguard Worker 
1289*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_NET__BEGIN     = 52,
1290*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_NET_THREAD_1_0 = (SPINEL_CAP_NET__BEGIN + 0),
1291*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_NET_THREAD_1_1 = (SPINEL_CAP_NET__BEGIN + 1),
1292*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_NET_THREAD_1_2 = (SPINEL_CAP_NET__BEGIN + 2),
1293*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_NET__END       = 64,
1294*cfb92d14SAndroid Build Coastguard Worker 
1295*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_RCP__BEGIN               = 64,
1296*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_RCP_API_VERSION          = (SPINEL_CAP_RCP__BEGIN + 0),
1297*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_RCP_MIN_HOST_API_VERSION = (SPINEL_CAP_RCP__BEGIN + 1),
1298*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_RCP_RESET_TO_BOOTLOADER  = (SPINEL_CAP_RCP__BEGIN + 2),
1299*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_RCP_LOG_CRASH_DUMP       = (SPINEL_CAP_RCP__BEGIN + 3),
1300*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_RCP__END                 = 80,
1301*cfb92d14SAndroid Build Coastguard Worker 
1302*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_OPENTHREAD__BEGIN       = 512,
1303*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_MAC_ALLOWLIST           = (SPINEL_CAP_OPENTHREAD__BEGIN + 0),
1304*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_MAC_RAW                 = (SPINEL_CAP_OPENTHREAD__BEGIN + 1),
1305*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_OOB_STEERING_DATA       = (SPINEL_CAP_OPENTHREAD__BEGIN + 2),
1306*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_CHANNEL_MONITOR         = (SPINEL_CAP_OPENTHREAD__BEGIN + 3),
1307*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_ERROR_RATE_TRACKING     = (SPINEL_CAP_OPENTHREAD__BEGIN + 4),
1308*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_CHANNEL_MANAGER         = (SPINEL_CAP_OPENTHREAD__BEGIN + 5),
1309*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_OPENTHREAD_LOG_METADATA = (SPINEL_CAP_OPENTHREAD__BEGIN + 6),
1310*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_TIME_SYNC               = (SPINEL_CAP_OPENTHREAD__BEGIN + 7),
1311*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_CHILD_SUPERVISION       = (SPINEL_CAP_OPENTHREAD__BEGIN + 8),
1312*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_POSIX                   = (SPINEL_CAP_OPENTHREAD__BEGIN + 9),
1313*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_SLAAC                   = (SPINEL_CAP_OPENTHREAD__BEGIN + 10),
1314*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_RADIO_COEX              = (SPINEL_CAP_OPENTHREAD__BEGIN + 11),
1315*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_MAC_RETRY_HISTOGRAM     = (SPINEL_CAP_OPENTHREAD__BEGIN + 12),
1316*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_MULTI_RADIO             = (SPINEL_CAP_OPENTHREAD__BEGIN + 13),
1317*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_SRP_CLIENT              = (SPINEL_CAP_OPENTHREAD__BEGIN + 14),
1318*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_DUA                     = (SPINEL_CAP_OPENTHREAD__BEGIN + 15),
1319*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_REFERENCE_DEVICE        = (SPINEL_CAP_OPENTHREAD__BEGIN + 16),
1320*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_OPENTHREAD__END         = 640,
1321*cfb92d14SAndroid Build Coastguard Worker 
1322*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_THREAD__BEGIN          = 1024,
1323*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_THREAD_COMMISSIONER    = (SPINEL_CAP_THREAD__BEGIN + 0),
1324*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_THREAD_TMF_PROXY       = (SPINEL_CAP_THREAD__BEGIN + 1),
1325*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_THREAD_UDP_FORWARD     = (SPINEL_CAP_THREAD__BEGIN + 2),
1326*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_THREAD_JOINER          = (SPINEL_CAP_THREAD__BEGIN + 3),
1327*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_THREAD_BORDER_ROUTER   = (SPINEL_CAP_THREAD__BEGIN + 4),
1328*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_THREAD_SERVICE         = (SPINEL_CAP_THREAD__BEGIN + 5),
1329*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_THREAD_CSL_RECEIVER    = (SPINEL_CAP_THREAD__BEGIN + 6),
1330*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_THREAD_LINK_METRICS    = (SPINEL_CAP_THREAD__BEGIN + 7),
1331*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_THREAD_BACKBONE_ROUTER = (SPINEL_CAP_THREAD__BEGIN + 8),
1332*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_THREAD__END            = 1152,
1333*cfb92d14SAndroid Build Coastguard Worker 
1334*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_NEST__BEGIN           = 15296,
1335*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_NEST_LEGACY_INTERFACE = (SPINEL_CAP_NEST__BEGIN + 0), ///< deprecated
1336*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_NEST_LEGACY_NET_WAKE  = (SPINEL_CAP_NEST__BEGIN + 1), ///< deprecated
1337*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_NEST_TRANSMIT_HOOK    = (SPINEL_CAP_NEST__BEGIN + 2),
1338*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_NEST__END             = 15360,
1339*cfb92d14SAndroid Build Coastguard Worker 
1340*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_VENDOR__BEGIN = 15360,
1341*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_VENDOR__END   = 16384,
1342*cfb92d14SAndroid Build Coastguard Worker 
1343*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_EXPERIMENTAL__BEGIN = 2000000,
1344*cfb92d14SAndroid Build Coastguard Worker     SPINEL_CAP_EXPERIMENTAL__END   = 2097152,
1345*cfb92d14SAndroid Build Coastguard Worker };
1346*cfb92d14SAndroid Build Coastguard Worker 
1347*cfb92d14SAndroid Build Coastguard Worker typedef uint32_t spinel_capability_t;
1348*cfb92d14SAndroid Build Coastguard Worker 
1349*cfb92d14SAndroid Build Coastguard Worker /**
1350*cfb92d14SAndroid Build Coastguard Worker  * Property Keys
1351*cfb92d14SAndroid Build Coastguard Worker  *
1352*cfb92d14SAndroid Build Coastguard Worker  * The properties are broken up into several sections, each with a
1353*cfb92d14SAndroid Build Coastguard Worker  * reserved ranges of property identifiers:
1354*cfb92d14SAndroid Build Coastguard Worker  *
1355*cfb92d14SAndroid Build Coastguard Worker  *    Name         | Range (Inclusive)              | Description
1356*cfb92d14SAndroid Build Coastguard Worker  *    -------------|--------------------------------|------------------------
1357*cfb92d14SAndroid Build Coastguard Worker  *    Core         | 0x000 - 0x01F, 0x1000 - 0x11FF | Spinel core
1358*cfb92d14SAndroid Build Coastguard Worker  *    PHY          | 0x020 - 0x02F, 0x1200 - 0x12FF | Radio PHY layer
1359*cfb92d14SAndroid Build Coastguard Worker  *    MAC          | 0x030 - 0x03F, 0x1300 - 0x13FF | MAC layer
1360*cfb92d14SAndroid Build Coastguard Worker  *    NET          | 0x040 - 0x04F, 0x1400 - 0x14FF | Network
1361*cfb92d14SAndroid Build Coastguard Worker  *    Thread       | 0x050 - 0x05F, 0x1500 - 0x15FF | Thread
1362*cfb92d14SAndroid Build Coastguard Worker  *    IPv6         | 0x060 - 0x06F, 0x1600 - 0x16FF | IPv6
1363*cfb92d14SAndroid Build Coastguard Worker  *    Stream       | 0x070 - 0x07F, 0x1700 - 0x17FF | Stream
1364*cfb92d14SAndroid Build Coastguard Worker  *    MeshCop      | 0x080 - 0x08F, 0x1800 - 0x18FF | Thread Mesh Commissioning
1365*cfb92d14SAndroid Build Coastguard Worker  *    OpenThread   |                0x1900 - 0x19FF | OpenThread specific
1366*cfb92d14SAndroid Build Coastguard Worker  *    Server       | 0x0A0 - 0x0AF                  | ALOC Service Server
1367*cfb92d14SAndroid Build Coastguard Worker  *    RCP          | 0x0B0 - 0x0FF                  | RCP specific
1368*cfb92d14SAndroid Build Coastguard Worker  *    Interface    | 0x100 - 0x1FF                  | Interface (e.g., UART)
1369*cfb92d14SAndroid Build Coastguard Worker  *    PIB          | 0x400 - 0x4FF                  | 802.15.4 PIB
1370*cfb92d14SAndroid Build Coastguard Worker  *    Counter      | 0x500 - 0x7FF                  | Counters (MAC, IP, etc).
1371*cfb92d14SAndroid Build Coastguard Worker  *    RCP          | 0x800 - 0x8FF                  | RCP specific property (extended)
1372*cfb92d14SAndroid Build Coastguard Worker  *    Nest         |                0x3BC0 - 0x3BFF | Nest (legacy)
1373*cfb92d14SAndroid Build Coastguard Worker  *    Vendor       |                0x3C00 - 0x3FFF | Vendor specific
1374*cfb92d14SAndroid Build Coastguard Worker  *    Debug        |                0x4000 - 0x43FF | Debug related
1375*cfb92d14SAndroid Build Coastguard Worker  *    Experimental |          2,000,000 - 2,097,151 | Experimental use only
1376*cfb92d14SAndroid Build Coastguard Worker  *
1377*cfb92d14SAndroid Build Coastguard Worker  */
1378*cfb92d14SAndroid Build Coastguard Worker enum
1379*cfb92d14SAndroid Build Coastguard Worker {
1380*cfb92d14SAndroid Build Coastguard Worker     /// Last Operation Status
1381*cfb92d14SAndroid Build Coastguard Worker     /** Format: `i` - Read-only
1382*cfb92d14SAndroid Build Coastguard Worker      *
1383*cfb92d14SAndroid Build Coastguard Worker      * Describes the status of the last operation. Encoded as a packed
1384*cfb92d14SAndroid Build Coastguard Worker      * unsigned integer (see `SPINEL_STATUS_*` for list of values).
1385*cfb92d14SAndroid Build Coastguard Worker      *
1386*cfb92d14SAndroid Build Coastguard Worker      * This property is emitted often to indicate the result status of
1387*cfb92d14SAndroid Build Coastguard Worker      * pretty much any Host-to-NCP operation.
1388*cfb92d14SAndroid Build Coastguard Worker      *
1389*cfb92d14SAndroid Build Coastguard Worker      * It is emitted automatically at NCP startup with a value indicating
1390*cfb92d14SAndroid Build Coastguard Worker      * the reset reason. It is also emitted asynchronously on an error (
1391*cfb92d14SAndroid Build Coastguard Worker      * e.g., NCP running out of buffer).
1392*cfb92d14SAndroid Build Coastguard Worker      *
1393*cfb92d14SAndroid Build Coastguard Worker      */
1394*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_LAST_STATUS = 0,
1395*cfb92d14SAndroid Build Coastguard Worker 
1396*cfb92d14SAndroid Build Coastguard Worker     /// Protocol Version
1397*cfb92d14SAndroid Build Coastguard Worker     /** Format: `ii` - Read-only
1398*cfb92d14SAndroid Build Coastguard Worker      *
1399*cfb92d14SAndroid Build Coastguard Worker      * Describes the protocol version information. This property contains
1400*cfb92d14SAndroid Build Coastguard Worker      * two fields, each encoded as a packed unsigned integer:
1401*cfb92d14SAndroid Build Coastguard Worker      *   `i`: Major Version Number
1402*cfb92d14SAndroid Build Coastguard Worker      *   `i`: Minor Version Number
1403*cfb92d14SAndroid Build Coastguard Worker      *
1404*cfb92d14SAndroid Build Coastguard Worker      * The version number is defined by `SPINEL_PROTOCOL_VERSION_THREAD_MAJOR`
1405*cfb92d14SAndroid Build Coastguard Worker      * and `SPINEL_PROTOCOL_VERSION_THREAD_MINOR`.
1406*cfb92d14SAndroid Build Coastguard Worker      *
1407*cfb92d14SAndroid Build Coastguard Worker      * This specification describes major version 4, minor version 3.
1408*cfb92d14SAndroid Build Coastguard Worker      *
1409*cfb92d14SAndroid Build Coastguard Worker      */
1410*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PROTOCOL_VERSION = 1,
1411*cfb92d14SAndroid Build Coastguard Worker 
1412*cfb92d14SAndroid Build Coastguard Worker     /// NCP Version
1413*cfb92d14SAndroid Build Coastguard Worker     /** Format: `U` - Read-only
1414*cfb92d14SAndroid Build Coastguard Worker      *
1415*cfb92d14SAndroid Build Coastguard Worker      * Contains a string which describes the firmware currently running on
1416*cfb92d14SAndroid Build Coastguard Worker      * the NCP. Encoded as a zero-terminated UTF-8 string.
1417*cfb92d14SAndroid Build Coastguard Worker      *
1418*cfb92d14SAndroid Build Coastguard Worker      */
1419*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NCP_VERSION = 2,
1420*cfb92d14SAndroid Build Coastguard Worker 
1421*cfb92d14SAndroid Build Coastguard Worker     /// NCP Network Protocol Type
1422*cfb92d14SAndroid Build Coastguard Worker     /** Format: 'i' - Read-only
1423*cfb92d14SAndroid Build Coastguard Worker      *
1424*cfb92d14SAndroid Build Coastguard Worker      * This value identifies what the network protocol for this NCP.
1425*cfb92d14SAndroid Build Coastguard Worker      * The valid protocol type values are defined by enumeration
1426*cfb92d14SAndroid Build Coastguard Worker      * `SPINEL_PROTOCOL_TYPE_*`:
1427*cfb92d14SAndroid Build Coastguard Worker      *
1428*cfb92d14SAndroid Build Coastguard Worker      *   `SPINEL_PROTOCOL_TYPE_BOOTLOADER` = 0
1429*cfb92d14SAndroid Build Coastguard Worker      *   `SPINEL_PROTOCOL_TYPE_ZIGBEE_IP`  = 2,
1430*cfb92d14SAndroid Build Coastguard Worker      *   `SPINEL_PROTOCOL_TYPE_THREAD`     = 3,
1431*cfb92d14SAndroid Build Coastguard Worker      *
1432*cfb92d14SAndroid Build Coastguard Worker      * OpenThread NCP supports only `SPINEL_PROTOCOL_TYPE_THREAD`
1433*cfb92d14SAndroid Build Coastguard Worker      *
1434*cfb92d14SAndroid Build Coastguard Worker      */
1435*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_INTERFACE_TYPE = 3,
1436*cfb92d14SAndroid Build Coastguard Worker 
1437*cfb92d14SAndroid Build Coastguard Worker     /// NCP Vendor ID
1438*cfb92d14SAndroid Build Coastguard Worker     /** Format: 'i` - Read-only
1439*cfb92d14SAndroid Build Coastguard Worker      *
1440*cfb92d14SAndroid Build Coastguard Worker      * Vendor ID. Zero for unknown.
1441*cfb92d14SAndroid Build Coastguard Worker      *
1442*cfb92d14SAndroid Build Coastguard Worker      */
1443*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_VENDOR_ID = 4,
1444*cfb92d14SAndroid Build Coastguard Worker 
1445*cfb92d14SAndroid Build Coastguard Worker     /// NCP Capability List
1446*cfb92d14SAndroid Build Coastguard Worker     /** Format: 'A(i)` - Read-only
1447*cfb92d14SAndroid Build Coastguard Worker      *
1448*cfb92d14SAndroid Build Coastguard Worker      * Describes the supported capabilities of this NCP. Encoded as a list of
1449*cfb92d14SAndroid Build Coastguard Worker      * packed unsigned integers.
1450*cfb92d14SAndroid Build Coastguard Worker      *
1451*cfb92d14SAndroid Build Coastguard Worker      * The capability values are specified by SPINEL_CAP_* enumeration.
1452*cfb92d14SAndroid Build Coastguard Worker      *
1453*cfb92d14SAndroid Build Coastguard Worker      */
1454*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CAPS = 5,
1455*cfb92d14SAndroid Build Coastguard Worker 
1456*cfb92d14SAndroid Build Coastguard Worker     /// NCP Interface Count
1457*cfb92d14SAndroid Build Coastguard Worker     /** Format: 'C` - Read-only
1458*cfb92d14SAndroid Build Coastguard Worker      *
1459*cfb92d14SAndroid Build Coastguard Worker      * Provides number of interfaces.
1460*cfb92d14SAndroid Build Coastguard Worker      *
1461*cfb92d14SAndroid Build Coastguard Worker      */
1462*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_INTERFACE_COUNT = 6,
1463*cfb92d14SAndroid Build Coastguard Worker 
1464*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_POWER_STATE = 7, ///< PowerState [C] (deprecated, use `MCU_POWER_STATE` instead).
1465*cfb92d14SAndroid Build Coastguard Worker 
1466*cfb92d14SAndroid Build Coastguard Worker     /// NCP Hardware Address
1467*cfb92d14SAndroid Build Coastguard Worker     /** Format: 'E` - Read-only
1468*cfb92d14SAndroid Build Coastguard Worker      *
1469*cfb92d14SAndroid Build Coastguard Worker      * The static EUI64 address of the device, used as a serial number.
1470*cfb92d14SAndroid Build Coastguard Worker      *
1471*cfb92d14SAndroid Build Coastguard Worker      */
1472*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_HWADDR = 8,
1473*cfb92d14SAndroid Build Coastguard Worker 
1474*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_LOCK          = 9,  ///< PropLock [b] (not supported)
1475*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_HBO_MEM_MAX   = 10, ///< Max offload mem [S] (not supported)
1476*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_HBO_BLOCK_MAX = 11, ///< Max offload block [S] (not supported)
1477*cfb92d14SAndroid Build Coastguard Worker 
1478*cfb92d14SAndroid Build Coastguard Worker     /// Host Power State
1479*cfb92d14SAndroid Build Coastguard Worker     /** Format: 'C`
1480*cfb92d14SAndroid Build Coastguard Worker      *
1481*cfb92d14SAndroid Build Coastguard Worker      * Describes the current power state of the host. This property is used
1482*cfb92d14SAndroid Build Coastguard Worker      * by the host to inform the NCP when it has changed power states. The
1483*cfb92d14SAndroid Build Coastguard Worker      * NCP can then use this state to determine which properties need
1484*cfb92d14SAndroid Build Coastguard Worker      * asynchronous updates. Enumeration `spinel_host_power_state_t` defines
1485*cfb92d14SAndroid Build Coastguard Worker      * the valid values (`SPINEL_HOST_POWER_STATE_*`):
1486*cfb92d14SAndroid Build Coastguard Worker      *
1487*cfb92d14SAndroid Build Coastguard Worker      *   `HOST_POWER_STATE_OFFLINE`: Host is physically powered off and
1488*cfb92d14SAndroid Build Coastguard Worker      *   cannot be woken by the NCP. All asynchronous commands are
1489*cfb92d14SAndroid Build Coastguard Worker      *   squelched.
1490*cfb92d14SAndroid Build Coastguard Worker      *
1491*cfb92d14SAndroid Build Coastguard Worker      *   `HOST_POWER_STATE_DEEP_SLEEP`: The host is in a low power state
1492*cfb92d14SAndroid Build Coastguard Worker      *   where it can be woken by the NCP but will potentially require more
1493*cfb92d14SAndroid Build Coastguard Worker      *   than two seconds to become fully responsive. The NCP MUST
1494*cfb92d14SAndroid Build Coastguard Worker      *   avoid sending unnecessary property updates, such as child table
1495*cfb92d14SAndroid Build Coastguard Worker      *   updates or non-critical messages on the debug stream. If the NCP
1496*cfb92d14SAndroid Build Coastguard Worker      *   needs to wake the host for traffic, the NCP MUST first take
1497*cfb92d14SAndroid Build Coastguard Worker      *   action to wake the host. Once the NCP signals to the host that it
1498*cfb92d14SAndroid Build Coastguard Worker      *   should wake up, the NCP MUST wait for some activity from the
1499*cfb92d14SAndroid Build Coastguard Worker      *   host (indicating that it is fully awake) before sending frames.
1500*cfb92d14SAndroid Build Coastguard Worker      *
1501*cfb92d14SAndroid Build Coastguard Worker      *   `HOST_POWER_STATE_RESERVED`:  This value MUST NOT be set by the host. If
1502*cfb92d14SAndroid Build Coastguard Worker      *   received by the NCP, the NCP SHOULD consider this as a synonym
1503*cfb92d14SAndroid Build Coastguard Worker      *   of `HOST_POWER_STATE_DEEP_SLEEP`.
1504*cfb92d14SAndroid Build Coastguard Worker      *
1505*cfb92d14SAndroid Build Coastguard Worker      *   `HOST_POWER_STATE_LOW_POWER`: The host is in a low power state
1506*cfb92d14SAndroid Build Coastguard Worker      *   where it can be immediately woken by the NCP. The NCP SHOULD
1507*cfb92d14SAndroid Build Coastguard Worker      *   avoid sending unnecessary property updates, such as child table
1508*cfb92d14SAndroid Build Coastguard Worker      *   updates or non-critical messages on the debug stream.
1509*cfb92d14SAndroid Build Coastguard Worker      *
1510*cfb92d14SAndroid Build Coastguard Worker      *   `HOST_POWER_STATE_ONLINE`: The host is awake and responsive. No
1511*cfb92d14SAndroid Build Coastguard Worker      *   special filtering is performed by the NCP on asynchronous updates.
1512*cfb92d14SAndroid Build Coastguard Worker      *
1513*cfb92d14SAndroid Build Coastguard Worker      *   All other values are RESERVED. They MUST NOT be set by the
1514*cfb92d14SAndroid Build Coastguard Worker      *   host. If received by the NCP, the NCP SHOULD consider the value as
1515*cfb92d14SAndroid Build Coastguard Worker      *   a synonym of `HOST_POWER_STATE_LOW_POWER`.
1516*cfb92d14SAndroid Build Coastguard Worker      *
1517*cfb92d14SAndroid Build Coastguard Worker      * After setting this power state, any further commands from the host to
1518*cfb92d14SAndroid Build Coastguard Worker      * the NCP will cause `HOST_POWER_STATE` to automatically revert to
1519*cfb92d14SAndroid Build Coastguard Worker      * `HOST_POWER_STATE_ONLINE`.
1520*cfb92d14SAndroid Build Coastguard Worker      *
1521*cfb92d14SAndroid Build Coastguard Worker      * When the host is entering a low-power state, it should wait for the
1522*cfb92d14SAndroid Build Coastguard Worker      * response from the NCP acknowledging the command (with `CMD_VALUE_IS`).
1523*cfb92d14SAndroid Build Coastguard Worker      * Once that acknowledgment is received the host may enter the low-power
1524*cfb92d14SAndroid Build Coastguard Worker      * state.
1525*cfb92d14SAndroid Build Coastguard Worker      *
1526*cfb92d14SAndroid Build Coastguard Worker      * If the NCP has the `CAP_UNSOL_UPDATE_FILTER` capability, any unsolicited
1527*cfb92d14SAndroid Build Coastguard Worker      * property updates masked by `PROP_UNSOL_UPDATE_FILTER` should be honored
1528*cfb92d14SAndroid Build Coastguard Worker      * while the host indicates it is in a low-power state. After resuming to the
1529*cfb92d14SAndroid Build Coastguard Worker      * `HOST_POWER_STATE_ONLINE` state, the value of `PROP_UNSOL_UPDATE_FILTER`
1530*cfb92d14SAndroid Build Coastguard Worker      * MUST be unchanged from the value assigned prior to the host indicating
1531*cfb92d14SAndroid Build Coastguard Worker      * it was entering a low-power state.
1532*cfb92d14SAndroid Build Coastguard Worker      *
1533*cfb92d14SAndroid Build Coastguard Worker      */
1534*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_HOST_POWER_STATE = 12,
1535*cfb92d14SAndroid Build Coastguard Worker 
1536*cfb92d14SAndroid Build Coastguard Worker     /// NCP's MCU Power State
1537*cfb92d14SAndroid Build Coastguard Worker     /** Format: 'C`
1538*cfb92d14SAndroid Build Coastguard Worker      *  Required capability: CAP_MCU_POWER_SAVE
1539*cfb92d14SAndroid Build Coastguard Worker      *
1540*cfb92d14SAndroid Build Coastguard Worker      * This property specifies the desired power state of NCP's micro-controller
1541*cfb92d14SAndroid Build Coastguard Worker      * (MCU) when the underlying platform's operating system enters idle mode (i.e.,
1542*cfb92d14SAndroid Build Coastguard Worker      * all active tasks/events are processed and the MCU can potentially enter a
1543*cfb92d14SAndroid Build Coastguard Worker      * energy-saving power state).
1544*cfb92d14SAndroid Build Coastguard Worker      *
1545*cfb92d14SAndroid Build Coastguard Worker      * The power state primarily determines how the host should interact with the NCP
1546*cfb92d14SAndroid Build Coastguard Worker      * and whether the host needs an external trigger (a "poke") to NCP before it can
1547*cfb92d14SAndroid Build Coastguard Worker      * communicate with the NCP or not. After a reset, the MCU power state MUST be
1548*cfb92d14SAndroid Build Coastguard Worker      * SPINEL_MCU_POWER_STATE_ON.
1549*cfb92d14SAndroid Build Coastguard Worker      *
1550*cfb92d14SAndroid Build Coastguard Worker      * Enumeration `spinel_mcu_power_state_t` defines the valid values
1551*cfb92d14SAndroid Build Coastguard Worker      * (`SPINEL_MCU_POWER_STATE_*` constants):
1552*cfb92d14SAndroid Build Coastguard Worker      *
1553*cfb92d14SAndroid Build Coastguard Worker      *   `SPINEL_MCU_POWER_STATE_ON`: NCP's MCU stays on and active all the time.
1554*cfb92d14SAndroid Build Coastguard Worker      *   When the NCP's desired power state is set to this value, host can send
1555*cfb92d14SAndroid Build Coastguard Worker      *   messages to NCP without requiring any "poke" or external triggers. MCU is
1556*cfb92d14SAndroid Build Coastguard Worker      *   expected to stay on and active. Note that the `ON` power state only
1557*cfb92d14SAndroid Build Coastguard Worker      *   determines the MCU's power mode and is not related to radio's state.
1558*cfb92d14SAndroid Build Coastguard Worker      *
1559*cfb92d14SAndroid Build Coastguard Worker      *   `SPINEL_MCU_POWER_STATE_LOW_POWER`: NCP's MCU can enter low-power
1560*cfb92d14SAndroid Build Coastguard Worker      *   (energy-saving) state. When the NCP's desired power state is set to
1561*cfb92d14SAndroid Build Coastguard Worker      *   `LOW_POWER`, host is expected to "poke" the NCP (e.g., an external trigger
1562*cfb92d14SAndroid Build Coastguard Worker      *   like an interrupt) before it can communicate with the NCP (send a message
1563*cfb92d14SAndroid Build Coastguard Worker      *   to the NCP). The "poke" mechanism is determined by the platform code (based
1564*cfb92d14SAndroid Build Coastguard Worker      *   on NCP's interface to the host).
1565*cfb92d14SAndroid Build Coastguard Worker      *   While power state is set to `LOW_POWER`, NCP can still (at any time) send
1566*cfb92d14SAndroid Build Coastguard Worker      *   messages to host. Note that receiving a message from the NCP does NOT
1567*cfb92d14SAndroid Build Coastguard Worker      *   indicate that the NCP's power state has changed, i.e., host is expected to
1568*cfb92d14SAndroid Build Coastguard Worker      *   continue to "poke" NCP when it wants to talk to the NCP until the power
1569*cfb92d14SAndroid Build Coastguard Worker      *   state is explicitly changed (by setting this property to `ON`).
1570*cfb92d14SAndroid Build Coastguard Worker      *   Note that the `LOW_POWER` power state only determines the MCU's power mode
1571*cfb92d14SAndroid Build Coastguard Worker      *   and is not related to radio's state.
1572*cfb92d14SAndroid Build Coastguard Worker      *
1573*cfb92d14SAndroid Build Coastguard Worker      *   `SPINEL_MCU_POWER_STATE_OFF`: NCP is fully powered off.
1574*cfb92d14SAndroid Build Coastguard Worker      *   An NCP hardware reset (via a RESET pin) is required to bring the NCP back
1575*cfb92d14SAndroid Build Coastguard Worker      *   to `SPINEL_MCU_POWER_STATE_ON`. RAM is not retained after reset.
1576*cfb92d14SAndroid Build Coastguard Worker      *
1577*cfb92d14SAndroid Build Coastguard Worker      */
1578*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MCU_POWER_STATE = 13,
1579*cfb92d14SAndroid Build Coastguard Worker 
1580*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_BASE_EXT__BEGIN = 0x1000,
1581*cfb92d14SAndroid Build Coastguard Worker 
1582*cfb92d14SAndroid Build Coastguard Worker     /// GPIO Configuration
1583*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(CCU)`
1584*cfb92d14SAndroid Build Coastguard Worker      *  Type: Read-Only (Optionally Read-write using `CMD_PROP_VALUE_INSERT`)
1585*cfb92d14SAndroid Build Coastguard Worker      *
1586*cfb92d14SAndroid Build Coastguard Worker      * An array of structures which contain the following fields:
1587*cfb92d14SAndroid Build Coastguard Worker      *
1588*cfb92d14SAndroid Build Coastguard Worker      * *   `C`: GPIO Number
1589*cfb92d14SAndroid Build Coastguard Worker      * *   `C`: GPIO Configuration Flags
1590*cfb92d14SAndroid Build Coastguard Worker      * *   `U`: Human-readable GPIO name
1591*cfb92d14SAndroid Build Coastguard Worker      *
1592*cfb92d14SAndroid Build Coastguard Worker      * GPIOs which do not have a corresponding entry are not supported.
1593*cfb92d14SAndroid Build Coastguard Worker      *
1594*cfb92d14SAndroid Build Coastguard Worker      * The configuration parameter contains the configuration flags for the
1595*cfb92d14SAndroid Build Coastguard Worker      * GPIO:
1596*cfb92d14SAndroid Build Coastguard Worker      *
1597*cfb92d14SAndroid Build Coastguard Worker      *       0   1   2   3   4   5   6   7
1598*cfb92d14SAndroid Build Coastguard Worker      *     +---+---+---+---+---+---+---+---+
1599*cfb92d14SAndroid Build Coastguard Worker      *     |DIR|PUP|PDN|TRIGGER|  RESERVED |
1600*cfb92d14SAndroid Build Coastguard Worker      *     +---+---+---+---+---+---+---+---+
1601*cfb92d14SAndroid Build Coastguard Worker      *             |O/D|
1602*cfb92d14SAndroid Build Coastguard Worker      *             +---+
1603*cfb92d14SAndroid Build Coastguard Worker      *
1604*cfb92d14SAndroid Build Coastguard Worker      * *   `DIR`: Pin direction. Clear (0) for input, set (1) for output.
1605*cfb92d14SAndroid Build Coastguard Worker      * *   `PUP`: Pull-up enabled flag.
1606*cfb92d14SAndroid Build Coastguard Worker      * *   `PDN`/`O/D`: Flag meaning depends on pin direction:
1607*cfb92d14SAndroid Build Coastguard Worker      *     *   Input: Pull-down enabled.
1608*cfb92d14SAndroid Build Coastguard Worker      *     *   Output: Output is an open-drain.
1609*cfb92d14SAndroid Build Coastguard Worker      * *   `TRIGGER`: Enumeration describing how pin changes generate
1610*cfb92d14SAndroid Build Coastguard Worker      *     asynchronous notification commands (TBD) from the NCP to the host.
1611*cfb92d14SAndroid Build Coastguard Worker      *     *   0: Feature disabled for this pin
1612*cfb92d14SAndroid Build Coastguard Worker      *     *   1: Trigger on falling edge
1613*cfb92d14SAndroid Build Coastguard Worker      *     *   2: Trigger on rising edge
1614*cfb92d14SAndroid Build Coastguard Worker      *     *   3: Trigger on level change
1615*cfb92d14SAndroid Build Coastguard Worker      * *   `RESERVED`: Bits reserved for future use. Always cleared to zero
1616*cfb92d14SAndroid Build Coastguard Worker      *     and ignored when read.
1617*cfb92d14SAndroid Build Coastguard Worker      *
1618*cfb92d14SAndroid Build Coastguard Worker      * As an optional feature, the configuration of individual pins may be
1619*cfb92d14SAndroid Build Coastguard Worker      * modified using the `CMD_PROP_VALUE_INSERT` command. Only the GPIO
1620*cfb92d14SAndroid Build Coastguard Worker      * number and flags fields MUST be present, the GPIO name (if present)
1621*cfb92d14SAndroid Build Coastguard Worker      * would be ignored. This command can only be used to modify the
1622*cfb92d14SAndroid Build Coastguard Worker      * configuration of GPIOs which are already exposed---it cannot be used
1623*cfb92d14SAndroid Build Coastguard Worker      * by the host to add additional GPIOs.
1624*cfb92d14SAndroid Build Coastguard Worker      */
1625*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_GPIO_CONFIG = SPINEL_PROP_BASE_EXT__BEGIN + 0,
1626*cfb92d14SAndroid Build Coastguard Worker 
1627*cfb92d14SAndroid Build Coastguard Worker     /// GPIO State Bitmask
1628*cfb92d14SAndroid Build Coastguard Worker     /** Format: `D`
1629*cfb92d14SAndroid Build Coastguard Worker      *  Type: Read-Write
1630*cfb92d14SAndroid Build Coastguard Worker      *
1631*cfb92d14SAndroid Build Coastguard Worker      * Contains a bit field identifying the state of the GPIOs. The length of
1632*cfb92d14SAndroid Build Coastguard Worker      * the data associated with these properties depends on the number of
1633*cfb92d14SAndroid Build Coastguard Worker      * GPIOs. If you have 10 GPIOs, you'd have two bytes. GPIOs are numbered
1634*cfb92d14SAndroid Build Coastguard Worker      * from most significant bit to least significant bit, so 0x80 is GPIO 0,
1635*cfb92d14SAndroid Build Coastguard Worker      * 0x40 is GPIO 1, etc.
1636*cfb92d14SAndroid Build Coastguard Worker      *
1637*cfb92d14SAndroid Build Coastguard Worker      * For GPIOs configured as inputs:
1638*cfb92d14SAndroid Build Coastguard Worker      *
1639*cfb92d14SAndroid Build Coastguard Worker      * *   `CMD_PROP_VALUE_GET`: The value of the associated bit describes the
1640*cfb92d14SAndroid Build Coastguard Worker      *     logic level read from the pin.
1641*cfb92d14SAndroid Build Coastguard Worker      * *   `CMD_PROP_VALUE_SET`: The value of the associated bit is ignored
1642*cfb92d14SAndroid Build Coastguard Worker      *     for these pins.
1643*cfb92d14SAndroid Build Coastguard Worker      *
1644*cfb92d14SAndroid Build Coastguard Worker      * For GPIOs configured as outputs:
1645*cfb92d14SAndroid Build Coastguard Worker      *
1646*cfb92d14SAndroid Build Coastguard Worker      * *   `CMD_PROP_VALUE_GET`: The value of the associated bit is
1647*cfb92d14SAndroid Build Coastguard Worker      *     implementation specific.
1648*cfb92d14SAndroid Build Coastguard Worker      * *   `CMD_PROP_VALUE_SET`: The value of the associated bit determines
1649*cfb92d14SAndroid Build Coastguard Worker      *     the new logic level of the output. If this pin is configured as an
1650*cfb92d14SAndroid Build Coastguard Worker      *     open-drain, setting the associated bit to 1 will cause the pin to
1651*cfb92d14SAndroid Build Coastguard Worker      *     enter a Hi-Z state.
1652*cfb92d14SAndroid Build Coastguard Worker      *
1653*cfb92d14SAndroid Build Coastguard Worker      * For GPIOs which are not specified in `PROP_GPIO_CONFIG`:
1654*cfb92d14SAndroid Build Coastguard Worker      *
1655*cfb92d14SAndroid Build Coastguard Worker      * *   `CMD_PROP_VALUE_GET`: The value of the associated bit is
1656*cfb92d14SAndroid Build Coastguard Worker      *     implementation specific.
1657*cfb92d14SAndroid Build Coastguard Worker      * *   `CMD_PROP_VALUE_SET`: The value of the associated bit MUST be
1658*cfb92d14SAndroid Build Coastguard Worker      *     ignored by the NCP.
1659*cfb92d14SAndroid Build Coastguard Worker      *
1660*cfb92d14SAndroid Build Coastguard Worker      * When writing, unspecified bits are assumed to be zero.
1661*cfb92d14SAndroid Build Coastguard Worker      */
1662*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_GPIO_STATE = SPINEL_PROP_BASE_EXT__BEGIN + 2,
1663*cfb92d14SAndroid Build Coastguard Worker 
1664*cfb92d14SAndroid Build Coastguard Worker     /// GPIO State Set-Only Bitmask
1665*cfb92d14SAndroid Build Coastguard Worker     /** Format: `D`
1666*cfb92d14SAndroid Build Coastguard Worker      *  Type: Write-Only
1667*cfb92d14SAndroid Build Coastguard Worker      *
1668*cfb92d14SAndroid Build Coastguard Worker      * Allows for the state of various output GPIOs to be set without affecting
1669*cfb92d14SAndroid Build Coastguard Worker      * other GPIO states. Contains a bit field identifying the output GPIOs that
1670*cfb92d14SAndroid Build Coastguard Worker      * should have their state set to 1.
1671*cfb92d14SAndroid Build Coastguard Worker      *
1672*cfb92d14SAndroid Build Coastguard Worker      * When writing, unspecified bits are assumed to be zero. The value of
1673*cfb92d14SAndroid Build Coastguard Worker      * any bits for GPIOs which are not specified in `PROP_GPIO_CONFIG` MUST
1674*cfb92d14SAndroid Build Coastguard Worker      * be ignored.
1675*cfb92d14SAndroid Build Coastguard Worker      */
1676*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_GPIO_STATE_SET = SPINEL_PROP_BASE_EXT__BEGIN + 3,
1677*cfb92d14SAndroid Build Coastguard Worker 
1678*cfb92d14SAndroid Build Coastguard Worker     /// GPIO State Clear-Only Bitmask
1679*cfb92d14SAndroid Build Coastguard Worker     /** Format: `D`
1680*cfb92d14SAndroid Build Coastguard Worker      *  Type: Write-Only
1681*cfb92d14SAndroid Build Coastguard Worker      *
1682*cfb92d14SAndroid Build Coastguard Worker      * Allows for the state of various output GPIOs to be cleared without affecting
1683*cfb92d14SAndroid Build Coastguard Worker      * other GPIO states. Contains a bit field identifying the output GPIOs that
1684*cfb92d14SAndroid Build Coastguard Worker      * should have their state cleared to 0.
1685*cfb92d14SAndroid Build Coastguard Worker      *
1686*cfb92d14SAndroid Build Coastguard Worker      * When writing, unspecified bits are assumed to be zero. The value of
1687*cfb92d14SAndroid Build Coastguard Worker      * any bits for GPIOs which are not specified in `PROP_GPIO_CONFIG` MUST
1688*cfb92d14SAndroid Build Coastguard Worker      * be ignored.
1689*cfb92d14SAndroid Build Coastguard Worker      */
1690*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_GPIO_STATE_CLEAR = SPINEL_PROP_BASE_EXT__BEGIN + 4,
1691*cfb92d14SAndroid Build Coastguard Worker 
1692*cfb92d14SAndroid Build Coastguard Worker     /// 32-bit random number from TRNG, ready-to-use.
1693*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_TRNG_32 = SPINEL_PROP_BASE_EXT__BEGIN + 5,
1694*cfb92d14SAndroid Build Coastguard Worker 
1695*cfb92d14SAndroid Build Coastguard Worker     /// 16 random bytes from TRNG, ready-to-use.
1696*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_TRNG_128 = SPINEL_PROP_BASE_EXT__BEGIN + 6,
1697*cfb92d14SAndroid Build Coastguard Worker 
1698*cfb92d14SAndroid Build Coastguard Worker     /// Raw samples from TRNG entropy source representing 32 bits of entropy.
1699*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_TRNG_RAW_32 = SPINEL_PROP_BASE_EXT__BEGIN + 7,
1700*cfb92d14SAndroid Build Coastguard Worker 
1701*cfb92d14SAndroid Build Coastguard Worker     /// NCP Unsolicited update filter
1702*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(I)`
1703*cfb92d14SAndroid Build Coastguard Worker      *  Type: Read-Write (optional Insert-Remove)
1704*cfb92d14SAndroid Build Coastguard Worker      *  Required capability: `CAP_UNSOL_UPDATE_FILTER`
1705*cfb92d14SAndroid Build Coastguard Worker      *
1706*cfb92d14SAndroid Build Coastguard Worker      * Contains a list of properties which are excluded from generating
1707*cfb92d14SAndroid Build Coastguard Worker      * unsolicited value updates. This property is empty after reset.
1708*cfb92d14SAndroid Build Coastguard Worker      * In other words, the host may opt-out of unsolicited property updates
1709*cfb92d14SAndroid Build Coastguard Worker      * for a specific property by adding that property id to this list.
1710*cfb92d14SAndroid Build Coastguard Worker      * Hosts SHOULD NOT add properties to this list which are not
1711*cfb92d14SAndroid Build Coastguard Worker      * present in `PROP_UNSOL_UPDATE_LIST`. If such properties are added,
1712*cfb92d14SAndroid Build Coastguard Worker      * the NCP ignores the unsupported properties.
1713*cfb92d14SAndroid Build Coastguard Worker      *
1714*cfb92d14SAndroid Build Coastguard Worker      */
1715*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_UNSOL_UPDATE_FILTER = SPINEL_PROP_BASE_EXT__BEGIN + 8,
1716*cfb92d14SAndroid Build Coastguard Worker 
1717*cfb92d14SAndroid Build Coastguard Worker     /// List of properties capable of generating unsolicited value update.
1718*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(I)`
1719*cfb92d14SAndroid Build Coastguard Worker      *  Type: Read-Only
1720*cfb92d14SAndroid Build Coastguard Worker      *  Required capability: `CAP_UNSOL_UPDATE_FILTER`
1721*cfb92d14SAndroid Build Coastguard Worker      *
1722*cfb92d14SAndroid Build Coastguard Worker      * Contains a list of properties which are capable of generating
1723*cfb92d14SAndroid Build Coastguard Worker      * unsolicited value updates. This list can be used when populating
1724*cfb92d14SAndroid Build Coastguard Worker      * `PROP_UNSOL_UPDATE_FILTER` to disable all unsolicited property
1725*cfb92d14SAndroid Build Coastguard Worker      * updates.
1726*cfb92d14SAndroid Build Coastguard Worker      *
1727*cfb92d14SAndroid Build Coastguard Worker      * This property is intended to effectively behave as a constant
1728*cfb92d14SAndroid Build Coastguard Worker      * for a given NCP firmware.
1729*cfb92d14SAndroid Build Coastguard Worker      */
1730*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_UNSOL_UPDATE_LIST = SPINEL_PROP_BASE_EXT__BEGIN + 9,
1731*cfb92d14SAndroid Build Coastguard Worker 
1732*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_BASE_EXT__END = 0x1100,
1733*cfb92d14SAndroid Build Coastguard Worker 
1734*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY__BEGIN         = 0x20,
1735*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_ENABLED        = SPINEL_PROP_PHY__BEGIN + 0,  ///< [b]
1736*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_CHAN           = SPINEL_PROP_PHY__BEGIN + 1,  ///< [C]
1737*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_CHAN_SUPPORTED = SPINEL_PROP_PHY__BEGIN + 2,  ///< [A(C)]
1738*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_FREQ           = SPINEL_PROP_PHY__BEGIN + 3,  ///< kHz [L]
1739*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_CCA_THRESHOLD  = SPINEL_PROP_PHY__BEGIN + 4,  ///< dBm [c]
1740*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_TX_POWER       = SPINEL_PROP_PHY__BEGIN + 5,  ///< [c]
1741*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_RSSI           = SPINEL_PROP_PHY__BEGIN + 6,  ///< dBm [c]
1742*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_RX_SENSITIVITY = SPINEL_PROP_PHY__BEGIN + 7,  ///< dBm [c]
1743*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_PCAP_ENABLED   = SPINEL_PROP_PHY__BEGIN + 8,  ///< [b]
1744*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_CHAN_PREFERRED = SPINEL_PROP_PHY__BEGIN + 9,  ///< [A(C)]
1745*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_FEM_LNA_GAIN   = SPINEL_PROP_PHY__BEGIN + 10, ///< dBm [c]
1746*cfb92d14SAndroid Build Coastguard Worker 
1747*cfb92d14SAndroid Build Coastguard Worker     /// Signal the max power for a channel
1748*cfb92d14SAndroid Build Coastguard Worker     /** Format: `Cc`
1749*cfb92d14SAndroid Build Coastguard Worker      *
1750*cfb92d14SAndroid Build Coastguard Worker      * First byte is the channel then the max transmit power, write-only.
1751*cfb92d14SAndroid Build Coastguard Worker      */
1752*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_CHAN_MAX_POWER = SPINEL_PROP_PHY__BEGIN + 11,
1753*cfb92d14SAndroid Build Coastguard Worker     /// Region code
1754*cfb92d14SAndroid Build Coastguard Worker     /** Format: `S`
1755*cfb92d14SAndroid Build Coastguard Worker      *
1756*cfb92d14SAndroid Build Coastguard Worker      * The ascii representation of the ISO 3166 alpha-2 code.
1757*cfb92d14SAndroid Build Coastguard Worker      *
1758*cfb92d14SAndroid Build Coastguard Worker      */
1759*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_REGION_CODE = SPINEL_PROP_PHY__BEGIN + 12,
1760*cfb92d14SAndroid Build Coastguard Worker 
1761*cfb92d14SAndroid Build Coastguard Worker     /// Calibrated Power Table
1762*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(Csd)` - Insert/Set
1763*cfb92d14SAndroid Build Coastguard Worker      *
1764*cfb92d14SAndroid Build Coastguard Worker      *  The `Insert` command on the property inserts a calibration power entry to the calibrated power table.
1765*cfb92d14SAndroid Build Coastguard Worker      *  The `Set` command on the property with empty payload clears the calibrated power table.
1766*cfb92d14SAndroid Build Coastguard Worker      *
1767*cfb92d14SAndroid Build Coastguard Worker      * Structure Parameters:
1768*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Channel.
1769*cfb92d14SAndroid Build Coastguard Worker      *  `s`: Actual power in 0.01 dBm.
1770*cfb92d14SAndroid Build Coastguard Worker      *  `d`: Raw power setting.
1771*cfb92d14SAndroid Build Coastguard Worker      */
1772*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_CALIBRATED_POWER = SPINEL_PROP_PHY__BEGIN + 13,
1773*cfb92d14SAndroid Build Coastguard Worker 
1774*cfb92d14SAndroid Build Coastguard Worker     /// Target power for a channel
1775*cfb92d14SAndroid Build Coastguard Worker     /** Format: `t(Cs)` - Write only
1776*cfb92d14SAndroid Build Coastguard Worker      *
1777*cfb92d14SAndroid Build Coastguard Worker      * Structure Parameters:
1778*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Channel.
1779*cfb92d14SAndroid Build Coastguard Worker      *  `s`: Target power in 0.01 dBm.
1780*cfb92d14SAndroid Build Coastguard Worker      */
1781*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_CHAN_TARGET_POWER = SPINEL_PROP_PHY__BEGIN + 14,
1782*cfb92d14SAndroid Build Coastguard Worker 
1783*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY__END = 0x30,
1784*cfb92d14SAndroid Build Coastguard Worker 
1785*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_EXT__BEGIN = 0x1200,
1786*cfb92d14SAndroid Build Coastguard Worker 
1787*cfb92d14SAndroid Build Coastguard Worker     /// Signal Jamming Detection Enable
1788*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b`
1789*cfb92d14SAndroid Build Coastguard Worker      *
1790*cfb92d14SAndroid Build Coastguard Worker      * Indicates if jamming detection is enabled or disabled. Set to true
1791*cfb92d14SAndroid Build Coastguard Worker      * to enable jamming detection.
1792*cfb92d14SAndroid Build Coastguard Worker      */
1793*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_JAM_DETECT_ENABLE = SPINEL_PROP_PHY_EXT__BEGIN + 0,
1794*cfb92d14SAndroid Build Coastguard Worker 
1795*cfb92d14SAndroid Build Coastguard Worker     /// Signal Jamming Detected Indicator
1796*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b` (Read-Only)
1797*cfb92d14SAndroid Build Coastguard Worker      *
1798*cfb92d14SAndroid Build Coastguard Worker      * Set to true if radio jamming is detected. Set to false otherwise.
1799*cfb92d14SAndroid Build Coastguard Worker      *
1800*cfb92d14SAndroid Build Coastguard Worker      * When jamming detection is enabled, changes to the value of this
1801*cfb92d14SAndroid Build Coastguard Worker      * property are emitted asynchronously via `CMD_PROP_VALUE_IS`.
1802*cfb92d14SAndroid Build Coastguard Worker      */
1803*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_JAM_DETECTED = SPINEL_PROP_PHY_EXT__BEGIN + 1,
1804*cfb92d14SAndroid Build Coastguard Worker 
1805*cfb92d14SAndroid Build Coastguard Worker     /// Jamming detection RSSI threshold
1806*cfb92d14SAndroid Build Coastguard Worker     /** Format: `c`
1807*cfb92d14SAndroid Build Coastguard Worker      *  Units: dBm
1808*cfb92d14SAndroid Build Coastguard Worker      *
1809*cfb92d14SAndroid Build Coastguard Worker      * This parameter describes the threshold RSSI level (measured in
1810*cfb92d14SAndroid Build Coastguard Worker      * dBm) above which the jamming detection will consider the
1811*cfb92d14SAndroid Build Coastguard Worker      * channel blocked.
1812*cfb92d14SAndroid Build Coastguard Worker      */
1813*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_JAM_DETECT_RSSI_THRESHOLD = SPINEL_PROP_PHY_EXT__BEGIN + 2,
1814*cfb92d14SAndroid Build Coastguard Worker 
1815*cfb92d14SAndroid Build Coastguard Worker     /// Jamming detection window size
1816*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
1817*cfb92d14SAndroid Build Coastguard Worker      *  Units: Seconds (1-63)
1818*cfb92d14SAndroid Build Coastguard Worker      *
1819*cfb92d14SAndroid Build Coastguard Worker      * This parameter describes the window period for signal jamming
1820*cfb92d14SAndroid Build Coastguard Worker      * detection.
1821*cfb92d14SAndroid Build Coastguard Worker      */
1822*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_JAM_DETECT_WINDOW = SPINEL_PROP_PHY_EXT__BEGIN + 3,
1823*cfb92d14SAndroid Build Coastguard Worker 
1824*cfb92d14SAndroid Build Coastguard Worker     /// Jamming detection busy period
1825*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
1826*cfb92d14SAndroid Build Coastguard Worker      *  Units: Seconds (1-63)
1827*cfb92d14SAndroid Build Coastguard Worker      *
1828*cfb92d14SAndroid Build Coastguard Worker      * This parameter describes the number of aggregate seconds within
1829*cfb92d14SAndroid Build Coastguard Worker      * the detection window where the RSSI must be above
1830*cfb92d14SAndroid Build Coastguard Worker      * `PROP_JAM_DETECT_RSSI_THRESHOLD` to trigger detection.
1831*cfb92d14SAndroid Build Coastguard Worker      *
1832*cfb92d14SAndroid Build Coastguard Worker      * The behavior of the jamming detection feature when `PROP_JAM_DETECT_BUSY`
1833*cfb92d14SAndroid Build Coastguard Worker      * is larger than `PROP_JAM_DETECT_WINDOW` is undefined.
1834*cfb92d14SAndroid Build Coastguard Worker      */
1835*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_JAM_DETECT_BUSY = SPINEL_PROP_PHY_EXT__BEGIN + 4,
1836*cfb92d14SAndroid Build Coastguard Worker 
1837*cfb92d14SAndroid Build Coastguard Worker     /// Jamming detection history bitmap (for debugging)
1838*cfb92d14SAndroid Build Coastguard Worker     /** Format: `X` (read-only)
1839*cfb92d14SAndroid Build Coastguard Worker      *
1840*cfb92d14SAndroid Build Coastguard Worker      * This value provides information about current state of jamming detection
1841*cfb92d14SAndroid Build Coastguard Worker      * module for monitoring/debugging purpose. It returns a 64-bit value where
1842*cfb92d14SAndroid Build Coastguard Worker      * each bit corresponds to one second interval starting with bit 0 for the
1843*cfb92d14SAndroid Build Coastguard Worker      * most recent interval and bit 63 for the oldest intervals (63 sec earlier).
1844*cfb92d14SAndroid Build Coastguard Worker      * The bit is set to 1 if the jamming detection module observed/detected
1845*cfb92d14SAndroid Build Coastguard Worker      * high signal level during the corresponding one second interval.
1846*cfb92d14SAndroid Build Coastguard Worker      *
1847*cfb92d14SAndroid Build Coastguard Worker      */
1848*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_JAM_DETECT_HISTORY_BITMAP = SPINEL_PROP_PHY_EXT__BEGIN + 5,
1849*cfb92d14SAndroid Build Coastguard Worker 
1850*cfb92d14SAndroid Build Coastguard Worker     /// Channel monitoring sample interval
1851*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (read-only)
1852*cfb92d14SAndroid Build Coastguard Worker      *  Units: Milliseconds
1853*cfb92d14SAndroid Build Coastguard Worker      *
1854*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MONITOR
1855*cfb92d14SAndroid Build Coastguard Worker      *
1856*cfb92d14SAndroid Build Coastguard Worker      * If channel monitoring is enabled and active, every sample interval, a
1857*cfb92d14SAndroid Build Coastguard Worker      * zero-duration Energy Scan is performed, collecting a single RSSI sample
1858*cfb92d14SAndroid Build Coastguard Worker      * per channel. The RSSI samples are compared with a pre-specified RSSI
1859*cfb92d14SAndroid Build Coastguard Worker      * threshold.
1860*cfb92d14SAndroid Build Coastguard Worker      *
1861*cfb92d14SAndroid Build Coastguard Worker      */
1862*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_INTERVAL = SPINEL_PROP_PHY_EXT__BEGIN + 6,
1863*cfb92d14SAndroid Build Coastguard Worker 
1864*cfb92d14SAndroid Build Coastguard Worker     /// Channel monitoring RSSI threshold
1865*cfb92d14SAndroid Build Coastguard Worker     /** Format: `c` (read-only)
1866*cfb92d14SAndroid Build Coastguard Worker      *  Units: dBm
1867*cfb92d14SAndroid Build Coastguard Worker      *
1868*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MONITOR
1869*cfb92d14SAndroid Build Coastguard Worker      *
1870*cfb92d14SAndroid Build Coastguard Worker      * This value specifies the threshold used by channel monitoring module.
1871*cfb92d14SAndroid Build Coastguard Worker      * Channel monitoring maintains the average rate of RSSI samples that
1872*cfb92d14SAndroid Build Coastguard Worker      * are above the threshold within (approximately) a pre-specified number
1873*cfb92d14SAndroid Build Coastguard Worker      * of samples (sample window).
1874*cfb92d14SAndroid Build Coastguard Worker      *
1875*cfb92d14SAndroid Build Coastguard Worker      */
1876*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MONITOR_RSSI_THRESHOLD = SPINEL_PROP_PHY_EXT__BEGIN + 7,
1877*cfb92d14SAndroid Build Coastguard Worker 
1878*cfb92d14SAndroid Build Coastguard Worker     /// Channel monitoring sample window
1879*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (read-only)
1880*cfb92d14SAndroid Build Coastguard Worker      *  Units: Number of samples
1881*cfb92d14SAndroid Build Coastguard Worker      *
1882*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MONITOR
1883*cfb92d14SAndroid Build Coastguard Worker      *
1884*cfb92d14SAndroid Build Coastguard Worker      * The averaging sample window length (in units of number of channel
1885*cfb92d14SAndroid Build Coastguard Worker      * samples) used by channel monitoring module. Channel monitoring will
1886*cfb92d14SAndroid Build Coastguard Worker      * sample all channels every sample interval. It maintains the average rate
1887*cfb92d14SAndroid Build Coastguard Worker      * of RSSI samples that are above the RSSI threshold within (approximately)
1888*cfb92d14SAndroid Build Coastguard Worker      * the sample window.
1889*cfb92d14SAndroid Build Coastguard Worker      *
1890*cfb92d14SAndroid Build Coastguard Worker      */
1891*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_WINDOW = SPINEL_PROP_PHY_EXT__BEGIN + 8,
1892*cfb92d14SAndroid Build Coastguard Worker 
1893*cfb92d14SAndroid Build Coastguard Worker     /// Channel monitoring sample count
1894*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (read-only)
1895*cfb92d14SAndroid Build Coastguard Worker      *  Units: Number of samples
1896*cfb92d14SAndroid Build Coastguard Worker      *
1897*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MONITOR
1898*cfb92d14SAndroid Build Coastguard Worker      *
1899*cfb92d14SAndroid Build Coastguard Worker      * Total number of RSSI samples (per channel) taken by the channel
1900*cfb92d14SAndroid Build Coastguard Worker      * monitoring module since its start (since Thread network interface
1901*cfb92d14SAndroid Build Coastguard Worker      * was enabled).
1902*cfb92d14SAndroid Build Coastguard Worker      *
1903*cfb92d14SAndroid Build Coastguard Worker      */
1904*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_COUNT = SPINEL_PROP_PHY_EXT__BEGIN + 9,
1905*cfb92d14SAndroid Build Coastguard Worker 
1906*cfb92d14SAndroid Build Coastguard Worker     /// Channel monitoring channel occupancy
1907*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(CU))` (read-only)
1908*cfb92d14SAndroid Build Coastguard Worker      *
1909*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MONITOR
1910*cfb92d14SAndroid Build Coastguard Worker      *
1911*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
1912*cfb92d14SAndroid Build Coastguard Worker      *
1913*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Channel
1914*cfb92d14SAndroid Build Coastguard Worker      *  `U`: Channel occupancy indicator
1915*cfb92d14SAndroid Build Coastguard Worker      *
1916*cfb92d14SAndroid Build Coastguard Worker      * The channel occupancy value represents the average rate/percentage of
1917*cfb92d14SAndroid Build Coastguard Worker      * RSSI samples that were above RSSI threshold ("bad" RSSI samples) within
1918*cfb92d14SAndroid Build Coastguard Worker      * (approximately) sample window latest RSSI samples.
1919*cfb92d14SAndroid Build Coastguard Worker      *
1920*cfb92d14SAndroid Build Coastguard Worker      * Max value of `0xffff` indicates all RSSI samples were above RSSI
1921*cfb92d14SAndroid Build Coastguard Worker      * threshold (i.e. 100% of samples were "bad").
1922*cfb92d14SAndroid Build Coastguard Worker      *
1923*cfb92d14SAndroid Build Coastguard Worker      */
1924*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MONITOR_CHANNEL_OCCUPANCY = SPINEL_PROP_PHY_EXT__BEGIN + 10,
1925*cfb92d14SAndroid Build Coastguard Worker 
1926*cfb92d14SAndroid Build Coastguard Worker     /// Radio caps
1927*cfb92d14SAndroid Build Coastguard Worker     /** Format: `i` (read-only)
1928*cfb92d14SAndroid Build Coastguard Worker      *
1929*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
1930*cfb92d14SAndroid Build Coastguard Worker      *
1931*cfb92d14SAndroid Build Coastguard Worker      *  `i`: Radio Capabilities.
1932*cfb92d14SAndroid Build Coastguard Worker      *
1933*cfb92d14SAndroid Build Coastguard Worker      */
1934*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RADIO_CAPS = SPINEL_PROP_PHY_EXT__BEGIN + 11,
1935*cfb92d14SAndroid Build Coastguard Worker 
1936*cfb92d14SAndroid Build Coastguard Worker     /// All coex metrics related counters.
1937*cfb92d14SAndroid Build Coastguard Worker     /** Format: t(LLLLLLLL)t(LLLLLLLLL)bL  (Read-only)
1938*cfb92d14SAndroid Build Coastguard Worker      *
1939*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_RADIO_COEX
1940*cfb92d14SAndroid Build Coastguard Worker      *
1941*cfb92d14SAndroid Build Coastguard Worker      * The contents include two structures and two common variables, first structure corresponds to
1942*cfb92d14SAndroid Build Coastguard Worker      * all transmit related coex counters, second structure provides the receive related counters.
1943*cfb92d14SAndroid Build Coastguard Worker      *
1944*cfb92d14SAndroid Build Coastguard Worker      * The transmit structure includes:
1945*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumTxRequest                       (The number of tx requests).
1946*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumTxGrantImmediate                (The number of tx requests while grant was active).
1947*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumTxGrantWait                     (The number of tx requests while grant was inactive).
1948*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumTxGrantWaitActivated            (The number of tx requests while grant was inactive that were
1949*cfb92d14SAndroid Build Coastguard Worker      *                                            ultimately granted).
1950*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumTxGrantWaitTimeout              (The number of tx requests while grant was inactive that timed out).
1951*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumTxGrantDeactivatedDuringRequest (The number of tx requests that were in progress when grant was
1952*cfb92d14SAndroid Build Coastguard Worker      *                                            deactivated).
1953*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumTxDelayedGrant                  (The number of tx requests that were not granted within 50us).
1954*cfb92d14SAndroid Build Coastguard Worker      *   'L': AvgTxRequestToGrantTime            (The average time in usec from tx request to grant).
1955*cfb92d14SAndroid Build Coastguard Worker      *
1956*cfb92d14SAndroid Build Coastguard Worker      * The receive structure includes:
1957*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumRxRequest                       (The number of rx requests).
1958*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumRxGrantImmediate                (The number of rx requests while grant was active).
1959*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumRxGrantWait                     (The number of rx requests while grant was inactive).
1960*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumRxGrantWaitActivated            (The number of rx requests while grant was inactive that were
1961*cfb92d14SAndroid Build Coastguard Worker      *                                            ultimately granted).
1962*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumRxGrantWaitTimeout              (The number of rx requests while grant was inactive that timed out).
1963*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumRxGrantDeactivatedDuringRequest (The number of rx requests that were in progress when grant was
1964*cfb92d14SAndroid Build Coastguard Worker      *                                            deactivated).
1965*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumRxDelayedGrant                  (The number of rx requests that were not granted within 50us).
1966*cfb92d14SAndroid Build Coastguard Worker      *   'L': AvgRxRequestToGrantTime            (The average time in usec from rx request to grant).
1967*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumRxGrantNone                     (The number of rx requests that completed without receiving grant).
1968*cfb92d14SAndroid Build Coastguard Worker      *
1969*cfb92d14SAndroid Build Coastguard Worker      * Two common variables:
1970*cfb92d14SAndroid Build Coastguard Worker      *   'b': Stopped        (Stats collection stopped due to saturation).
1971*cfb92d14SAndroid Build Coastguard Worker      *   'L': NumGrantGlitch (The number of of grant glitches).
1972*cfb92d14SAndroid Build Coastguard Worker      */
1973*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RADIO_COEX_METRICS = SPINEL_PROP_PHY_EXT__BEGIN + 12,
1974*cfb92d14SAndroid Build Coastguard Worker 
1975*cfb92d14SAndroid Build Coastguard Worker     /// Radio Coex Enable
1976*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b`
1977*cfb92d14SAndroid Build Coastguard Worker      *
1978*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_RADIO_COEX
1979*cfb92d14SAndroid Build Coastguard Worker      *
1980*cfb92d14SAndroid Build Coastguard Worker      * Indicates if radio coex is enabled or disabled. Set to true to enable radio coex.
1981*cfb92d14SAndroid Build Coastguard Worker      */
1982*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RADIO_COEX_ENABLE = SPINEL_PROP_PHY_EXT__BEGIN + 13,
1983*cfb92d14SAndroid Build Coastguard Worker 
1984*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PHY_EXT__END = 0x1300,
1985*cfb92d14SAndroid Build Coastguard Worker 
1986*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC__BEGIN = 0x30,
1987*cfb92d14SAndroid Build Coastguard Worker 
1988*cfb92d14SAndroid Build Coastguard Worker     /// MAC Scan State
1989*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
1990*cfb92d14SAndroid Build Coastguard Worker      *
1991*cfb92d14SAndroid Build Coastguard Worker      * Possible values are from enumeration `spinel_scan_state_t`.
1992*cfb92d14SAndroid Build Coastguard Worker      *
1993*cfb92d14SAndroid Build Coastguard Worker      *   SCAN_STATE_IDLE
1994*cfb92d14SAndroid Build Coastguard Worker      *   SCAN_STATE_BEACON
1995*cfb92d14SAndroid Build Coastguard Worker      *   SCAN_STATE_ENERGY
1996*cfb92d14SAndroid Build Coastguard Worker      *   SCAN_STATE_DISCOVER
1997*cfb92d14SAndroid Build Coastguard Worker      *
1998*cfb92d14SAndroid Build Coastguard Worker      * Set to `SCAN_STATE_BEACON` to start an active scan.
1999*cfb92d14SAndroid Build Coastguard Worker      * Beacons will be emitted from `PROP_MAC_SCAN_BEACON`.
2000*cfb92d14SAndroid Build Coastguard Worker      *
2001*cfb92d14SAndroid Build Coastguard Worker      * Set to `SCAN_STATE_ENERGY` to start an energy scan.
2002*cfb92d14SAndroid Build Coastguard Worker      * Channel energy result will be reported by emissions
2003*cfb92d14SAndroid Build Coastguard Worker      * of `PROP_MAC_ENERGY_SCAN_RESULT` (per channel).
2004*cfb92d14SAndroid Build Coastguard Worker      *
2005*cfb92d14SAndroid Build Coastguard Worker      * Set to `SCAN_STATE_DISCOVER` to start a Thread MLE discovery
2006*cfb92d14SAndroid Build Coastguard Worker      * scan operation. Discovery scan result will be emitted from
2007*cfb92d14SAndroid Build Coastguard Worker      * `PROP_MAC_SCAN_BEACON`.
2008*cfb92d14SAndroid Build Coastguard Worker      *
2009*cfb92d14SAndroid Build Coastguard Worker      * Value switches to `SCAN_STATE_IDLE` when scan is complete.
2010*cfb92d14SAndroid Build Coastguard Worker      *
2011*cfb92d14SAndroid Build Coastguard Worker      */
2012*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_SCAN_STATE = SPINEL_PROP_MAC__BEGIN + 0,
2013*cfb92d14SAndroid Build Coastguard Worker 
2014*cfb92d14SAndroid Build Coastguard Worker     /// MAC Scan Channel Mask
2015*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(C)`
2016*cfb92d14SAndroid Build Coastguard Worker      *
2017*cfb92d14SAndroid Build Coastguard Worker      * List of channels to scan.
2018*cfb92d14SAndroid Build Coastguard Worker      *
2019*cfb92d14SAndroid Build Coastguard Worker      */
2020*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_SCAN_MASK = SPINEL_PROP_MAC__BEGIN + 1,
2021*cfb92d14SAndroid Build Coastguard Worker 
2022*cfb92d14SAndroid Build Coastguard Worker     /// MAC Scan Channel Period
2023*cfb92d14SAndroid Build Coastguard Worker     /** Format: `S`
2024*cfb92d14SAndroid Build Coastguard Worker      *  Unit: milliseconds per channel
2025*cfb92d14SAndroid Build Coastguard Worker      *
2026*cfb92d14SAndroid Build Coastguard Worker      */
2027*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_SCAN_PERIOD = SPINEL_PROP_MAC__BEGIN + 2,
2028*cfb92d14SAndroid Build Coastguard Worker 
2029*cfb92d14SAndroid Build Coastguard Worker     /// MAC Scan Beacon
2030*cfb92d14SAndroid Build Coastguard Worker     /** Format `Cct(ESSc)t(iCUdd)` - Asynchronous event only
2031*cfb92d14SAndroid Build Coastguard Worker      *
2032*cfb92d14SAndroid Build Coastguard Worker      * Scan beacons have two embedded structures which contain
2033*cfb92d14SAndroid Build Coastguard Worker      * information about the MAC layer and the NET layer. Their
2034*cfb92d14SAndroid Build Coastguard Worker      * format depends on the MAC and NET layer currently in use.
2035*cfb92d14SAndroid Build Coastguard Worker      * The format below is for an 802.15.4 MAC with Thread:
2036*cfb92d14SAndroid Build Coastguard Worker      *
2037*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Channel
2038*cfb92d14SAndroid Build Coastguard Worker      *  `c`: RSSI of the beacon
2039*cfb92d14SAndroid Build Coastguard Worker      *  `t`: MAC layer properties (802.15.4 layer)
2040*cfb92d14SAndroid Build Coastguard Worker      *    `E`: Long address
2041*cfb92d14SAndroid Build Coastguard Worker      *    `S`: Short address
2042*cfb92d14SAndroid Build Coastguard Worker      *    `S`: PAN-ID
2043*cfb92d14SAndroid Build Coastguard Worker      *    `c`: LQI
2044*cfb92d14SAndroid Build Coastguard Worker      *  NET layer properties
2045*cfb92d14SAndroid Build Coastguard Worker      *    `i`: Protocol Number (SPINEL_PROTOCOL_TYPE_* values)
2046*cfb92d14SAndroid Build Coastguard Worker      *    `C`: Flags (SPINEL_BEACON_THREAD_FLAG_* values)
2047*cfb92d14SAndroid Build Coastguard Worker      *    `U`: Network Name
2048*cfb92d14SAndroid Build Coastguard Worker      *    `d`: XPANID
2049*cfb92d14SAndroid Build Coastguard Worker      *    `d`: Steering data
2050*cfb92d14SAndroid Build Coastguard Worker      *
2051*cfb92d14SAndroid Build Coastguard Worker      * Extra parameters may be added to each of the structures
2052*cfb92d14SAndroid Build Coastguard Worker      * in the future, so care should be taken to read the length
2053*cfb92d14SAndroid Build Coastguard Worker      * that prepends each structure.
2054*cfb92d14SAndroid Build Coastguard Worker      *
2055*cfb92d14SAndroid Build Coastguard Worker      */
2056*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_SCAN_BEACON = SPINEL_PROP_MAC__BEGIN + 3,
2057*cfb92d14SAndroid Build Coastguard Worker 
2058*cfb92d14SAndroid Build Coastguard Worker     /// MAC Long Address
2059*cfb92d14SAndroid Build Coastguard Worker     /** Format: `E`
2060*cfb92d14SAndroid Build Coastguard Worker      *
2061*cfb92d14SAndroid Build Coastguard Worker      * The 802.15.4 long address of this node.
2062*cfb92d14SAndroid Build Coastguard Worker      *
2063*cfb92d14SAndroid Build Coastguard Worker      */
2064*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_15_4_LADDR = SPINEL_PROP_MAC__BEGIN + 4,
2065*cfb92d14SAndroid Build Coastguard Worker 
2066*cfb92d14SAndroid Build Coastguard Worker     /// MAC Short Address
2067*cfb92d14SAndroid Build Coastguard Worker     /** Format: `S`
2068*cfb92d14SAndroid Build Coastguard Worker      *
2069*cfb92d14SAndroid Build Coastguard Worker      * The 802.15.4 short address of this node.
2070*cfb92d14SAndroid Build Coastguard Worker      *
2071*cfb92d14SAndroid Build Coastguard Worker      */
2072*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_15_4_SADDR = SPINEL_PROP_MAC__BEGIN + 5,
2073*cfb92d14SAndroid Build Coastguard Worker 
2074*cfb92d14SAndroid Build Coastguard Worker     /// MAC PAN ID
2075*cfb92d14SAndroid Build Coastguard Worker     /** Format: `S`
2076*cfb92d14SAndroid Build Coastguard Worker      *
2077*cfb92d14SAndroid Build Coastguard Worker      * The 802.15.4 PANID this node is associated with.
2078*cfb92d14SAndroid Build Coastguard Worker      *
2079*cfb92d14SAndroid Build Coastguard Worker      */
2080*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_15_4_PANID = SPINEL_PROP_MAC__BEGIN + 6,
2081*cfb92d14SAndroid Build Coastguard Worker 
2082*cfb92d14SAndroid Build Coastguard Worker     /// MAC Stream Raw Enabled
2083*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b`
2084*cfb92d14SAndroid Build Coastguard Worker      *
2085*cfb92d14SAndroid Build Coastguard Worker      * Set to true to enable raw MAC frames to be emitted from
2086*cfb92d14SAndroid Build Coastguard Worker      * `PROP_STREAM_RAW`.
2087*cfb92d14SAndroid Build Coastguard Worker      *
2088*cfb92d14SAndroid Build Coastguard Worker      */
2089*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_RAW_STREAM_ENABLED = SPINEL_PROP_MAC__BEGIN + 7,
2090*cfb92d14SAndroid Build Coastguard Worker 
2091*cfb92d14SAndroid Build Coastguard Worker     /// MAC Promiscuous Mode
2092*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
2093*cfb92d14SAndroid Build Coastguard Worker      *
2094*cfb92d14SAndroid Build Coastguard Worker      * Possible values are from enumeration
2095*cfb92d14SAndroid Build Coastguard Worker      * `SPINEL_MAC_PROMISCUOUS_MODE_*`:
2096*cfb92d14SAndroid Build Coastguard Worker      *
2097*cfb92d14SAndroid Build Coastguard Worker      *   `SPINEL_MAC_PROMISCUOUS_MODE_OFF`
2098*cfb92d14SAndroid Build Coastguard Worker      *        Normal MAC filtering is in place.
2099*cfb92d14SAndroid Build Coastguard Worker      *
2100*cfb92d14SAndroid Build Coastguard Worker      *   `SPINEL_MAC_PROMISCUOUS_MODE_NETWORK`
2101*cfb92d14SAndroid Build Coastguard Worker      *        All MAC packets matching network are passed up
2102*cfb92d14SAndroid Build Coastguard Worker      *        the stack.
2103*cfb92d14SAndroid Build Coastguard Worker      *
2104*cfb92d14SAndroid Build Coastguard Worker      *   `SPINEL_MAC_PROMISCUOUS_MODE_FULL`
2105*cfb92d14SAndroid Build Coastguard Worker      *        All decoded MAC packets are passed up the stack.
2106*cfb92d14SAndroid Build Coastguard Worker      *
2107*cfb92d14SAndroid Build Coastguard Worker      */
2108*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_PROMISCUOUS_MODE = SPINEL_PROP_MAC__BEGIN + 8,
2109*cfb92d14SAndroid Build Coastguard Worker 
2110*cfb92d14SAndroid Build Coastguard Worker     /// MAC Energy Scan Result
2111*cfb92d14SAndroid Build Coastguard Worker     /** Format: `Cc` - Asynchronous event only
2112*cfb92d14SAndroid Build Coastguard Worker      *
2113*cfb92d14SAndroid Build Coastguard Worker      * This property is emitted during energy scan operation
2114*cfb92d14SAndroid Build Coastguard Worker      * per scanned channel with following format:
2115*cfb92d14SAndroid Build Coastguard Worker      *
2116*cfb92d14SAndroid Build Coastguard Worker      *   `C`: Channel
2117*cfb92d14SAndroid Build Coastguard Worker      *   `c`: RSSI (in dBm)
2118*cfb92d14SAndroid Build Coastguard Worker      *
2119*cfb92d14SAndroid Build Coastguard Worker      */
2120*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_ENERGY_SCAN_RESULT = SPINEL_PROP_MAC__BEGIN + 9,
2121*cfb92d14SAndroid Build Coastguard Worker 
2122*cfb92d14SAndroid Build Coastguard Worker     /// MAC Data Poll Period
2123*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L`
2124*cfb92d14SAndroid Build Coastguard Worker      *  Unit: millisecond
2125*cfb92d14SAndroid Build Coastguard Worker      * The (user-specified) data poll (802.15.4 MAC Data Request) period
2126*cfb92d14SAndroid Build Coastguard Worker      * in milliseconds. Value zero means there is no user-specified
2127*cfb92d14SAndroid Build Coastguard Worker      * poll period, and the network stack determines the maximum period
2128*cfb92d14SAndroid Build Coastguard Worker      * based on the MLE Child Timeout.
2129*cfb92d14SAndroid Build Coastguard Worker      *
2130*cfb92d14SAndroid Build Coastguard Worker      * If the value is non-zero, it specifies the maximum period between
2131*cfb92d14SAndroid Build Coastguard Worker      * data poll transmissions. Note that the network stack may send data
2132*cfb92d14SAndroid Build Coastguard Worker      * request transmissions more frequently when expecting a control-message
2133*cfb92d14SAndroid Build Coastguard Worker      * (e.g., when waiting for an MLE Child ID Response).
2134*cfb92d14SAndroid Build Coastguard Worker      *
2135*cfb92d14SAndroid Build Coastguard Worker      */
2136*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_DATA_POLL_PERIOD = SPINEL_PROP_MAC__BEGIN + 10,
2137*cfb92d14SAndroid Build Coastguard Worker 
2138*cfb92d14SAndroid Build Coastguard Worker     /// MAC RxOnWhenIdle mode
2139*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b`
2140*cfb92d14SAndroid Build Coastguard Worker      *
2141*cfb92d14SAndroid Build Coastguard Worker      * Set to true to enable RxOnWhenIdle or false to disable it.
2142*cfb92d14SAndroid Build Coastguard Worker      * When True, the radio is expected to stay in receive state during
2143*cfb92d14SAndroid Build Coastguard Worker      * idle periods. When False, the radio is expected to switch to sleep
2144*cfb92d14SAndroid Build Coastguard Worker      * state during idle periods.
2145*cfb92d14SAndroid Build Coastguard Worker      *
2146*cfb92d14SAndroid Build Coastguard Worker      */
2147*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_RX_ON_WHEN_IDLE_MODE = SPINEL_PROP_MAC__BEGIN + 11,
2148*cfb92d14SAndroid Build Coastguard Worker 
2149*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC__END = 0x40,
2150*cfb92d14SAndroid Build Coastguard Worker 
2151*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_EXT__BEGIN = 0x1300,
2152*cfb92d14SAndroid Build Coastguard Worker 
2153*cfb92d14SAndroid Build Coastguard Worker     /// MAC Allowlist
2154*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(Ec))`
2155*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `CAP_MAC_ALLOWLIST`
2156*cfb92d14SAndroid Build Coastguard Worker      *
2157*cfb92d14SAndroid Build Coastguard Worker      * Structure Parameters:
2158*cfb92d14SAndroid Build Coastguard Worker      *
2159*cfb92d14SAndroid Build Coastguard Worker      *  `E`: EUI64 address of node
2160*cfb92d14SAndroid Build Coastguard Worker      *  `c`: Optional RSSI-override value. The value 127 indicates
2161*cfb92d14SAndroid Build Coastguard Worker      *       that the RSSI-override feature is not enabled for this
2162*cfb92d14SAndroid Build Coastguard Worker      *       address. If this value is omitted when setting or
2163*cfb92d14SAndroid Build Coastguard Worker      *       inserting, it is assumed to be 127. This parameter is
2164*cfb92d14SAndroid Build Coastguard Worker      *       ignored when removing.
2165*cfb92d14SAndroid Build Coastguard Worker      */
2166*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_ALLOWLIST = SPINEL_PROP_MAC_EXT__BEGIN + 0,
2167*cfb92d14SAndroid Build Coastguard Worker 
2168*cfb92d14SAndroid Build Coastguard Worker     /// MAC Allowlist Enabled Flag
2169*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b`
2170*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `CAP_MAC_ALLOWLIST`
2171*cfb92d14SAndroid Build Coastguard Worker      *
2172*cfb92d14SAndroid Build Coastguard Worker      */
2173*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_ALLOWLIST_ENABLED = SPINEL_PROP_MAC_EXT__BEGIN + 1,
2174*cfb92d14SAndroid Build Coastguard Worker 
2175*cfb92d14SAndroid Build Coastguard Worker     /// MAC Extended Address
2176*cfb92d14SAndroid Build Coastguard Worker     /** Format: `E`
2177*cfb92d14SAndroid Build Coastguard Worker      *
2178*cfb92d14SAndroid Build Coastguard Worker      *  Specified by Thread. Randomly-chosen, but non-volatile EUI-64.
2179*cfb92d14SAndroid Build Coastguard Worker      */
2180*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_EXTENDED_ADDR = SPINEL_PROP_MAC_EXT__BEGIN + 2,
2181*cfb92d14SAndroid Build Coastguard Worker 
2182*cfb92d14SAndroid Build Coastguard Worker     /// MAC Source Match Enabled Flag
2183*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b`
2184*cfb92d14SAndroid Build Coastguard Worker      * Required Capability: SPINEL_CAP_MAC_RAW or SPINEL_CAP_CONFIG_RADIO
2185*cfb92d14SAndroid Build Coastguard Worker      *
2186*cfb92d14SAndroid Build Coastguard Worker      * Set to true to enable radio source matching or false to disable it.
2187*cfb92d14SAndroid Build Coastguard Worker      * The source match functionality is used by radios when generating
2188*cfb92d14SAndroid Build Coastguard Worker      * ACKs. The short and extended address lists are used for setting
2189*cfb92d14SAndroid Build Coastguard Worker      * the Frame Pending bit in the ACKs.
2190*cfb92d14SAndroid Build Coastguard Worker      *
2191*cfb92d14SAndroid Build Coastguard Worker      */
2192*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_SRC_MATCH_ENABLED = SPINEL_PROP_MAC_EXT__BEGIN + 3,
2193*cfb92d14SAndroid Build Coastguard Worker 
2194*cfb92d14SAndroid Build Coastguard Worker     /// MAC Source Match Short Address List
2195*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(S)`
2196*cfb92d14SAndroid Build Coastguard Worker      * Required Capability: SPINEL_CAP_MAC_RAW or SPINEL_CAP_CONFIG_RADIO
2197*cfb92d14SAndroid Build Coastguard Worker      *
2198*cfb92d14SAndroid Build Coastguard Worker      */
2199*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_SRC_MATCH_SHORT_ADDRESSES = SPINEL_PROP_MAC_EXT__BEGIN + 4,
2200*cfb92d14SAndroid Build Coastguard Worker 
2201*cfb92d14SAndroid Build Coastguard Worker     /// MAC Source Match Extended Address List
2202*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(E)`
2203*cfb92d14SAndroid Build Coastguard Worker      *  Required Capability: SPINEL_CAP_MAC_RAW or SPINEL_CAP_CONFIG_RADIO
2204*cfb92d14SAndroid Build Coastguard Worker      *
2205*cfb92d14SAndroid Build Coastguard Worker      */
2206*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_SRC_MATCH_EXTENDED_ADDRESSES = SPINEL_PROP_MAC_EXT__BEGIN + 5,
2207*cfb92d14SAndroid Build Coastguard Worker 
2208*cfb92d14SAndroid Build Coastguard Worker     /// MAC Denylist
2209*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(E))`
2210*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `CAP_MAC_ALLOWLIST`
2211*cfb92d14SAndroid Build Coastguard Worker      *
2212*cfb92d14SAndroid Build Coastguard Worker      * Structure Parameters:
2213*cfb92d14SAndroid Build Coastguard Worker      *
2214*cfb92d14SAndroid Build Coastguard Worker      *  `E`: EUI64 address of node
2215*cfb92d14SAndroid Build Coastguard Worker      *
2216*cfb92d14SAndroid Build Coastguard Worker      */
2217*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_DENYLIST = SPINEL_PROP_MAC_EXT__BEGIN + 6,
2218*cfb92d14SAndroid Build Coastguard Worker 
2219*cfb92d14SAndroid Build Coastguard Worker     /// MAC Denylist Enabled Flag
2220*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b`
2221*cfb92d14SAndroid Build Coastguard Worker      *  Required capability: `CAP_MAC_ALLOWLIST`
2222*cfb92d14SAndroid Build Coastguard Worker      */
2223*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_DENYLIST_ENABLED = SPINEL_PROP_MAC_EXT__BEGIN + 7,
2224*cfb92d14SAndroid Build Coastguard Worker 
2225*cfb92d14SAndroid Build Coastguard Worker     /// MAC Received Signal Strength Filter
2226*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(Ec))`
2227*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `CAP_MAC_ALLOWLIST`
2228*cfb92d14SAndroid Build Coastguard Worker      *
2229*cfb92d14SAndroid Build Coastguard Worker      * Structure Parameters:
2230*cfb92d14SAndroid Build Coastguard Worker      *
2231*cfb92d14SAndroid Build Coastguard Worker      * * `E`: Optional EUI64 address of node. Set default RSS if not included.
2232*cfb92d14SAndroid Build Coastguard Worker      * * `c`: Fixed RSS. 127 means not set.
2233*cfb92d14SAndroid Build Coastguard Worker      */
2234*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_FIXED_RSS = SPINEL_PROP_MAC_EXT__BEGIN + 8,
2235*cfb92d14SAndroid Build Coastguard Worker 
2236*cfb92d14SAndroid Build Coastguard Worker     /// The CCA failure rate
2237*cfb92d14SAndroid Build Coastguard Worker     /** Format: `S`
2238*cfb92d14SAndroid Build Coastguard Worker      *
2239*cfb92d14SAndroid Build Coastguard Worker      * This property provides the current CCA (Clear Channel Assessment) failure rate.
2240*cfb92d14SAndroid Build Coastguard Worker      *
2241*cfb92d14SAndroid Build Coastguard Worker      * Maximum value `0xffff` corresponding to 100% failure rate.
2242*cfb92d14SAndroid Build Coastguard Worker      *
2243*cfb92d14SAndroid Build Coastguard Worker      */
2244*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_CCA_FAILURE_RATE = SPINEL_PROP_MAC_EXT__BEGIN + 9,
2245*cfb92d14SAndroid Build Coastguard Worker 
2246*cfb92d14SAndroid Build Coastguard Worker     /// MAC Max direct retry number
2247*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
2248*cfb92d14SAndroid Build Coastguard Worker      *
2249*cfb92d14SAndroid Build Coastguard Worker      * The maximum (user-specified) number of direct frame transmission retries.
2250*cfb92d14SAndroid Build Coastguard Worker      *
2251*cfb92d14SAndroid Build Coastguard Worker      */
2252*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_MAX_RETRY_NUMBER_DIRECT = SPINEL_PROP_MAC_EXT__BEGIN + 10,
2253*cfb92d14SAndroid Build Coastguard Worker 
2254*cfb92d14SAndroid Build Coastguard Worker     /// MAC Max indirect retry number
2255*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
2256*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_CONFIG_FTD`
2257*cfb92d14SAndroid Build Coastguard Worker      *
2258*cfb92d14SAndroid Build Coastguard Worker      * The maximum (user-specified) number of indirect frame transmission retries.
2259*cfb92d14SAndroid Build Coastguard Worker      *
2260*cfb92d14SAndroid Build Coastguard Worker      */
2261*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_MAX_RETRY_NUMBER_INDIRECT = SPINEL_PROP_MAC_EXT__BEGIN + 11,
2262*cfb92d14SAndroid Build Coastguard Worker 
2263*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MAC_EXT__END = 0x1400,
2264*cfb92d14SAndroid Build Coastguard Worker 
2265*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET__BEGIN = 0x40,
2266*cfb92d14SAndroid Build Coastguard Worker 
2267*cfb92d14SAndroid Build Coastguard Worker     /// Network Is Saved (Is Commissioned)
2268*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b` - Read only
2269*cfb92d14SAndroid Build Coastguard Worker      *
2270*cfb92d14SAndroid Build Coastguard Worker      * Returns true if there is a network state stored/saved.
2271*cfb92d14SAndroid Build Coastguard Worker      *
2272*cfb92d14SAndroid Build Coastguard Worker      */
2273*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_SAVED = SPINEL_PROP_NET__BEGIN + 0,
2274*cfb92d14SAndroid Build Coastguard Worker 
2275*cfb92d14SAndroid Build Coastguard Worker     /// Network Interface Status
2276*cfb92d14SAndroid Build Coastguard Worker     /** Format `b` - Read-write
2277*cfb92d14SAndroid Build Coastguard Worker      *
2278*cfb92d14SAndroid Build Coastguard Worker      * Network interface up/down status. Write true to bring
2279*cfb92d14SAndroid Build Coastguard Worker      * interface up and false to bring interface down.
2280*cfb92d14SAndroid Build Coastguard Worker      *
2281*cfb92d14SAndroid Build Coastguard Worker      */
2282*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_IF_UP = SPINEL_PROP_NET__BEGIN + 1,
2283*cfb92d14SAndroid Build Coastguard Worker 
2284*cfb92d14SAndroid Build Coastguard Worker     /// Thread Stack Operational Status
2285*cfb92d14SAndroid Build Coastguard Worker     /** Format `b` - Read-write
2286*cfb92d14SAndroid Build Coastguard Worker      *
2287*cfb92d14SAndroid Build Coastguard Worker      * Thread stack operational status. Write true to start
2288*cfb92d14SAndroid Build Coastguard Worker      * Thread stack and false to stop it.
2289*cfb92d14SAndroid Build Coastguard Worker      *
2290*cfb92d14SAndroid Build Coastguard Worker      */
2291*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_STACK_UP = SPINEL_PROP_NET__BEGIN + 2,
2292*cfb92d14SAndroid Build Coastguard Worker 
2293*cfb92d14SAndroid Build Coastguard Worker     /// Thread Device Role
2294*cfb92d14SAndroid Build Coastguard Worker     /** Format `C` - Read-write
2295*cfb92d14SAndroid Build Coastguard Worker      *
2296*cfb92d14SAndroid Build Coastguard Worker      * Possible values are from enumeration `spinel_net_role_t`
2297*cfb92d14SAndroid Build Coastguard Worker      *
2298*cfb92d14SAndroid Build Coastguard Worker      *  SPINEL_NET_ROLE_DETACHED = 0,
2299*cfb92d14SAndroid Build Coastguard Worker      *  SPINEL_NET_ROLE_CHILD    = 1,
2300*cfb92d14SAndroid Build Coastguard Worker      *  SPINEL_NET_ROLE_ROUTER   = 2,
2301*cfb92d14SAndroid Build Coastguard Worker      *  SPINEL_NET_ROLE_LEADER   = 3,
2302*cfb92d14SAndroid Build Coastguard Worker      *  SPINEL_NET_ROLE_DISABLED = 4,
2303*cfb92d14SAndroid Build Coastguard Worker      *
2304*cfb92d14SAndroid Build Coastguard Worker      */
2305*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_ROLE = SPINEL_PROP_NET__BEGIN + 3,
2306*cfb92d14SAndroid Build Coastguard Worker 
2307*cfb92d14SAndroid Build Coastguard Worker     /// Thread Network Name
2308*cfb92d14SAndroid Build Coastguard Worker     /** Format `U` - Read-write
2309*cfb92d14SAndroid Build Coastguard Worker      *
2310*cfb92d14SAndroid Build Coastguard Worker      */
2311*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_NETWORK_NAME = SPINEL_PROP_NET__BEGIN + 4,
2312*cfb92d14SAndroid Build Coastguard Worker 
2313*cfb92d14SAndroid Build Coastguard Worker     /// Thread Network Extended PAN ID
2314*cfb92d14SAndroid Build Coastguard Worker     /** Format `D` - Read-write
2315*cfb92d14SAndroid Build Coastguard Worker      *
2316*cfb92d14SAndroid Build Coastguard Worker      */
2317*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_XPANID = SPINEL_PROP_NET__BEGIN + 5,
2318*cfb92d14SAndroid Build Coastguard Worker 
2319*cfb92d14SAndroid Build Coastguard Worker     /// Thread Network Key
2320*cfb92d14SAndroid Build Coastguard Worker     /** Format `D` - Read-write
2321*cfb92d14SAndroid Build Coastguard Worker      *
2322*cfb92d14SAndroid Build Coastguard Worker      */
2323*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_NETWORK_KEY = SPINEL_PROP_NET__BEGIN + 6,
2324*cfb92d14SAndroid Build Coastguard Worker 
2325*cfb92d14SAndroid Build Coastguard Worker     /// Thread Network Key Sequence Counter
2326*cfb92d14SAndroid Build Coastguard Worker     /** Format `L` - Read-write
2327*cfb92d14SAndroid Build Coastguard Worker      *
2328*cfb92d14SAndroid Build Coastguard Worker      */
2329*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_KEY_SEQUENCE_COUNTER = SPINEL_PROP_NET__BEGIN + 7,
2330*cfb92d14SAndroid Build Coastguard Worker 
2331*cfb92d14SAndroid Build Coastguard Worker     /// Thread Network Partition Id
2332*cfb92d14SAndroid Build Coastguard Worker     /** Format `L` - Read-write
2333*cfb92d14SAndroid Build Coastguard Worker      *
2334*cfb92d14SAndroid Build Coastguard Worker      * The partition ID of the partition that this node is a
2335*cfb92d14SAndroid Build Coastguard Worker      * member of.
2336*cfb92d14SAndroid Build Coastguard Worker      *
2337*cfb92d14SAndroid Build Coastguard Worker      */
2338*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_PARTITION_ID = SPINEL_PROP_NET__BEGIN + 8,
2339*cfb92d14SAndroid Build Coastguard Worker 
2340*cfb92d14SAndroid Build Coastguard Worker     /// Require Join Existing
2341*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b`
2342*cfb92d14SAndroid Build Coastguard Worker      *  Default Value: `false`
2343*cfb92d14SAndroid Build Coastguard Worker      *
2344*cfb92d14SAndroid Build Coastguard Worker      * This flag is typically used for nodes that are associating with an
2345*cfb92d14SAndroid Build Coastguard Worker      * existing network for the first time. If this is set to `true` before
2346*cfb92d14SAndroid Build Coastguard Worker      * `PROP_NET_STACK_UP` is set to `true`, the
2347*cfb92d14SAndroid Build Coastguard Worker      * creation of a new partition at association is prevented. If the node
2348*cfb92d14SAndroid Build Coastguard Worker      * cannot associate with an existing partition, `PROP_LAST_STATUS` will
2349*cfb92d14SAndroid Build Coastguard Worker      * emit a status that indicates why the association failed and
2350*cfb92d14SAndroid Build Coastguard Worker      * `PROP_NET_STACK_UP` will automatically revert to `false`.
2351*cfb92d14SAndroid Build Coastguard Worker      *
2352*cfb92d14SAndroid Build Coastguard Worker      * Once associated with an existing partition, this flag automatically
2353*cfb92d14SAndroid Build Coastguard Worker      * reverts to `false`.
2354*cfb92d14SAndroid Build Coastguard Worker      *
2355*cfb92d14SAndroid Build Coastguard Worker      * The behavior of this property being set to `true` when
2356*cfb92d14SAndroid Build Coastguard Worker      * `PROP_NET_STACK_UP` is already set to `true` is undefined.
2357*cfb92d14SAndroid Build Coastguard Worker      *
2358*cfb92d14SAndroid Build Coastguard Worker      */
2359*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING = SPINEL_PROP_NET__BEGIN + 9,
2360*cfb92d14SAndroid Build Coastguard Worker 
2361*cfb92d14SAndroid Build Coastguard Worker     /// Thread Network Key Switch Guard Time
2362*cfb92d14SAndroid Build Coastguard Worker     /** Format `L` - Read-write
2363*cfb92d14SAndroid Build Coastguard Worker      *
2364*cfb92d14SAndroid Build Coastguard Worker      */
2365*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_KEY_SWITCH_GUARDTIME = SPINEL_PROP_NET__BEGIN + 10,
2366*cfb92d14SAndroid Build Coastguard Worker 
2367*cfb92d14SAndroid Build Coastguard Worker     /// Thread Network PSKc
2368*cfb92d14SAndroid Build Coastguard Worker     /** Format `D` - Read-write
2369*cfb92d14SAndroid Build Coastguard Worker      *
2370*cfb92d14SAndroid Build Coastguard Worker      */
2371*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_PSKC = SPINEL_PROP_NET__BEGIN + 11,
2372*cfb92d14SAndroid Build Coastguard Worker 
2373*cfb92d14SAndroid Build Coastguard Worker     /// Instruct NCP to leave the current network gracefully
2374*cfb92d14SAndroid Build Coastguard Worker     /** Format Empty - Write only
2375*cfb92d14SAndroid Build Coastguard Worker      *
2376*cfb92d14SAndroid Build Coastguard Worker      */
2377*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_LEAVE_GRACEFULLY = SPINEL_PROP_NET__BEGIN + 12,
2378*cfb92d14SAndroid Build Coastguard Worker 
2379*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET__END = 0x50,
2380*cfb92d14SAndroid Build Coastguard Worker 
2381*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_EXT__BEGIN = 0x1400,
2382*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NET_EXT__END   = 0x1500,
2383*cfb92d14SAndroid Build Coastguard Worker 
2384*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD__BEGIN = 0x50,
2385*cfb92d14SAndroid Build Coastguard Worker 
2386*cfb92d14SAndroid Build Coastguard Worker     /// Thread Leader IPv6 Address
2387*cfb92d14SAndroid Build Coastguard Worker     /** Format `6` - Read only
2388*cfb92d14SAndroid Build Coastguard Worker      *
2389*cfb92d14SAndroid Build Coastguard Worker      */
2390*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LEADER_ADDR = SPINEL_PROP_THREAD__BEGIN + 0,
2391*cfb92d14SAndroid Build Coastguard Worker 
2392*cfb92d14SAndroid Build Coastguard Worker     /// Thread Parent Info
2393*cfb92d14SAndroid Build Coastguard Worker     /** Format: `ESLccCCCCC` - Read only
2394*cfb92d14SAndroid Build Coastguard Worker      *
2395*cfb92d14SAndroid Build Coastguard Worker      *  `E`: Extended address
2396*cfb92d14SAndroid Build Coastguard Worker      *  `S`: RLOC16
2397*cfb92d14SAndroid Build Coastguard Worker      *  `L`: Age (seconds since last heard from)
2398*cfb92d14SAndroid Build Coastguard Worker      *  `c`: Average RSS (in dBm)
2399*cfb92d14SAndroid Build Coastguard Worker      *  `c`: Last RSSI (in dBm)
2400*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Link Quality In
2401*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Link Quality Out
2402*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Version
2403*cfb92d14SAndroid Build Coastguard Worker      *  `C`: CSL clock accuracy
2404*cfb92d14SAndroid Build Coastguard Worker      *  `C`: CSL uncertainty
2405*cfb92d14SAndroid Build Coastguard Worker      *
2406*cfb92d14SAndroid Build Coastguard Worker      */
2407*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_PARENT = SPINEL_PROP_THREAD__BEGIN + 1,
2408*cfb92d14SAndroid Build Coastguard Worker 
2409*cfb92d14SAndroid Build Coastguard Worker     /// Thread Child Table
2410*cfb92d14SAndroid Build Coastguard Worker     /** Format: [A(t(ESLLCCcCc)] - Read only
2411*cfb92d14SAndroid Build Coastguard Worker      *
2412*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
2413*cfb92d14SAndroid Build Coastguard Worker      *
2414*cfb92d14SAndroid Build Coastguard Worker      *  `E`: Extended address
2415*cfb92d14SAndroid Build Coastguard Worker      *  `S`: RLOC16
2416*cfb92d14SAndroid Build Coastguard Worker      *  `L`: Timeout (in seconds)
2417*cfb92d14SAndroid Build Coastguard Worker      *  `L`: Age (in seconds)
2418*cfb92d14SAndroid Build Coastguard Worker      *  `L`: Network Data version
2419*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Link Quality In
2420*cfb92d14SAndroid Build Coastguard Worker      *  `c`: Average RSS (in dBm)
2421*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Mode (bit-flags)
2422*cfb92d14SAndroid Build Coastguard Worker      *  `c`: Last RSSI (in dBm)
2423*cfb92d14SAndroid Build Coastguard Worker      *
2424*cfb92d14SAndroid Build Coastguard Worker      */
2425*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_CHILD_TABLE = SPINEL_PROP_THREAD__BEGIN + 2,
2426*cfb92d14SAndroid Build Coastguard Worker 
2427*cfb92d14SAndroid Build Coastguard Worker     /// Thread Leader Router Id
2428*cfb92d14SAndroid Build Coastguard Worker     /** Format `C` - Read only
2429*cfb92d14SAndroid Build Coastguard Worker      *
2430*cfb92d14SAndroid Build Coastguard Worker      * The router-id of the current leader.
2431*cfb92d14SAndroid Build Coastguard Worker      *
2432*cfb92d14SAndroid Build Coastguard Worker      */
2433*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LEADER_RID = SPINEL_PROP_THREAD__BEGIN + 3,
2434*cfb92d14SAndroid Build Coastguard Worker 
2435*cfb92d14SAndroid Build Coastguard Worker     /// Thread Leader Weight
2436*cfb92d14SAndroid Build Coastguard Worker     /** Format `C` - Read only
2437*cfb92d14SAndroid Build Coastguard Worker      *
2438*cfb92d14SAndroid Build Coastguard Worker      * The leader weight of the current leader.
2439*cfb92d14SAndroid Build Coastguard Worker      *
2440*cfb92d14SAndroid Build Coastguard Worker      */
2441*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LEADER_WEIGHT = SPINEL_PROP_THREAD__BEGIN + 4,
2442*cfb92d14SAndroid Build Coastguard Worker 
2443*cfb92d14SAndroid Build Coastguard Worker     /// Thread Local Leader Weight
2444*cfb92d14SAndroid Build Coastguard Worker     /** Format `C` - Read only
2445*cfb92d14SAndroid Build Coastguard Worker      *
2446*cfb92d14SAndroid Build Coastguard Worker      * The leader weight of this node.
2447*cfb92d14SAndroid Build Coastguard Worker      *
2448*cfb92d14SAndroid Build Coastguard Worker      */
2449*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LOCAL_LEADER_WEIGHT = SPINEL_PROP_THREAD__BEGIN + 5,
2450*cfb92d14SAndroid Build Coastguard Worker 
2451*cfb92d14SAndroid Build Coastguard Worker     /// Thread Local Network Data
2452*cfb92d14SAndroid Build Coastguard Worker     /** Format `D` - Read only
2453*cfb92d14SAndroid Build Coastguard Worker      *
2454*cfb92d14SAndroid Build Coastguard Worker      */
2455*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_NETWORK_DATA = SPINEL_PROP_THREAD__BEGIN + 6,
2456*cfb92d14SAndroid Build Coastguard Worker 
2457*cfb92d14SAndroid Build Coastguard Worker     /// Thread Local Network Data Version
2458*cfb92d14SAndroid Build Coastguard Worker     /** Format `C` - Read only
2459*cfb92d14SAndroid Build Coastguard Worker      *
2460*cfb92d14SAndroid Build Coastguard Worker      */
2461*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_NETWORK_DATA_VERSION = SPINEL_PROP_THREAD__BEGIN + 7,
2462*cfb92d14SAndroid Build Coastguard Worker 
2463*cfb92d14SAndroid Build Coastguard Worker     /// Thread Local Stable Network Data
2464*cfb92d14SAndroid Build Coastguard Worker     /** Format `D` - Read only
2465*cfb92d14SAndroid Build Coastguard Worker      *
2466*cfb92d14SAndroid Build Coastguard Worker      */
2467*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_STABLE_NETWORK_DATA = SPINEL_PROP_THREAD__BEGIN + 8,
2468*cfb92d14SAndroid Build Coastguard Worker 
2469*cfb92d14SAndroid Build Coastguard Worker     /// Thread Local Stable Network Data Version
2470*cfb92d14SAndroid Build Coastguard Worker     /** Format `C` - Read only
2471*cfb92d14SAndroid Build Coastguard Worker      *
2472*cfb92d14SAndroid Build Coastguard Worker      */
2473*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_STABLE_NETWORK_DATA_VERSION = SPINEL_PROP_THREAD__BEGIN + 9,
2474*cfb92d14SAndroid Build Coastguard Worker 
2475*cfb92d14SAndroid Build Coastguard Worker     /// On-Mesh Prefixes
2476*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(6CbCbSC))`
2477*cfb92d14SAndroid Build Coastguard Worker      *
2478*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
2479*cfb92d14SAndroid Build Coastguard Worker      *
2480*cfb92d14SAndroid Build Coastguard Worker      *  `6`: IPv6 Prefix
2481*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Prefix length in bits
2482*cfb92d14SAndroid Build Coastguard Worker      *  `b`: Stable flag
2483*cfb92d14SAndroid Build Coastguard Worker      *  `C`: TLV flags (SPINEL_NET_FLAG_* definition)
2484*cfb92d14SAndroid Build Coastguard Worker      *  `b`: "Is defined locally" flag. Set if this network was locally
2485*cfb92d14SAndroid Build Coastguard Worker      *       defined. Assumed to be true for set, insert and replace. Clear if
2486*cfb92d14SAndroid Build Coastguard Worker      *       the on mesh network was defined by another node.
2487*cfb92d14SAndroid Build Coastguard Worker      *       This field is ignored for INSERT and REMOVE commands.
2488*cfb92d14SAndroid Build Coastguard Worker      *  `S`: The RLOC16 of the device that registered this on-mesh prefix entry.
2489*cfb92d14SAndroid Build Coastguard Worker      *       This value is not used and ignored when adding an on-mesh prefix.
2490*cfb92d14SAndroid Build Coastguard Worker      *       This field is ignored for INSERT and REMOVE commands.
2491*cfb92d14SAndroid Build Coastguard Worker      *  `C`: TLV flags extended (additional field for Thread 1.2 features).
2492*cfb92d14SAndroid Build Coastguard Worker      *
2493*cfb92d14SAndroid Build Coastguard Worker      */
2494*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ON_MESH_NETS = SPINEL_PROP_THREAD__BEGIN + 10,
2495*cfb92d14SAndroid Build Coastguard Worker 
2496*cfb92d14SAndroid Build Coastguard Worker     /// Off-mesh routes
2497*cfb92d14SAndroid Build Coastguard Worker     /** Format: [A(t(6CbCbb))]
2498*cfb92d14SAndroid Build Coastguard Worker      *
2499*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
2500*cfb92d14SAndroid Build Coastguard Worker      *
2501*cfb92d14SAndroid Build Coastguard Worker      *  `6`: Route Prefix
2502*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Prefix length in bits
2503*cfb92d14SAndroid Build Coastguard Worker      *  `b`: Stable flag
2504*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Route flags (SPINEL_ROUTE_FLAG_* and SPINEL_ROUTE_PREFERENCE_* definitions)
2505*cfb92d14SAndroid Build Coastguard Worker      *  `b`: "Is defined locally" flag. Set if this route info was locally
2506*cfb92d14SAndroid Build Coastguard Worker      *       defined as part of local network data. Assumed to be true for set,
2507*cfb92d14SAndroid Build Coastguard Worker      *       insert and replace. Clear if the route is part of partition's network
2508*cfb92d14SAndroid Build Coastguard Worker      *       data.
2509*cfb92d14SAndroid Build Coastguard Worker      *  `b`: "Next hop is this device" flag. Set if the next hop for the
2510*cfb92d14SAndroid Build Coastguard Worker      *       route is this device itself (i.e., route was added by this device)
2511*cfb92d14SAndroid Build Coastguard Worker      *       This value is ignored when adding an external route. For any added
2512*cfb92d14SAndroid Build Coastguard Worker      *       route the next hop is this device.
2513*cfb92d14SAndroid Build Coastguard Worker      *  `S`: The RLOC16 of the device that registered this route entry.
2514*cfb92d14SAndroid Build Coastguard Worker      *       This value is not used and ignored when adding a route.
2515*cfb92d14SAndroid Build Coastguard Worker      *
2516*cfb92d14SAndroid Build Coastguard Worker      */
2517*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_OFF_MESH_ROUTES = SPINEL_PROP_THREAD__BEGIN + 11,
2518*cfb92d14SAndroid Build Coastguard Worker 
2519*cfb92d14SAndroid Build Coastguard Worker     /// Thread Assisting Ports
2520*cfb92d14SAndroid Build Coastguard Worker     /** Format `A(S)`
2521*cfb92d14SAndroid Build Coastguard Worker      *
2522*cfb92d14SAndroid Build Coastguard Worker      * Array of port numbers.
2523*cfb92d14SAndroid Build Coastguard Worker      */
2524*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ASSISTING_PORTS = SPINEL_PROP_THREAD__BEGIN + 12,
2525*cfb92d14SAndroid Build Coastguard Worker 
2526*cfb92d14SAndroid Build Coastguard Worker     /// Thread Allow Local Network Data Change
2527*cfb92d14SAndroid Build Coastguard Worker     /** Format `b` - Read-write
2528*cfb92d14SAndroid Build Coastguard Worker      *
2529*cfb92d14SAndroid Build Coastguard Worker      * Set to true before changing local net data. Set to false when finished.
2530*cfb92d14SAndroid Build Coastguard Worker      * This allows changes to be aggregated into a single event.
2531*cfb92d14SAndroid Build Coastguard Worker      *
2532*cfb92d14SAndroid Build Coastguard Worker      */
2533*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ALLOW_LOCAL_NET_DATA_CHANGE = SPINEL_PROP_THREAD__BEGIN + 13,
2534*cfb92d14SAndroid Build Coastguard Worker 
2535*cfb92d14SAndroid Build Coastguard Worker     /// Thread Mode
2536*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
2537*cfb92d14SAndroid Build Coastguard Worker      *
2538*cfb92d14SAndroid Build Coastguard Worker      *  This property contains the value of the mode
2539*cfb92d14SAndroid Build Coastguard Worker      *  TLV for this node. The meaning of the bits in this
2540*cfb92d14SAndroid Build Coastguard Worker      *  bit-field are defined by section 4.5.2 of the Thread
2541*cfb92d14SAndroid Build Coastguard Worker      *  specification.
2542*cfb92d14SAndroid Build Coastguard Worker      *
2543*cfb92d14SAndroid Build Coastguard Worker      * The values `SPINEL_THREAD_MODE_*` defines the bit-fields
2544*cfb92d14SAndroid Build Coastguard Worker      *
2545*cfb92d14SAndroid Build Coastguard Worker      */
2546*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_MODE = SPINEL_PROP_THREAD__BEGIN + 14,
2547*cfb92d14SAndroid Build Coastguard Worker 
2548*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD__END = 0x60,
2549*cfb92d14SAndroid Build Coastguard Worker 
2550*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_EXT__BEGIN = 0x1500,
2551*cfb92d14SAndroid Build Coastguard Worker 
2552*cfb92d14SAndroid Build Coastguard Worker     /// Thread Child Timeout
2553*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L`
2554*cfb92d14SAndroid Build Coastguard Worker      *  Unit: Seconds
2555*cfb92d14SAndroid Build Coastguard Worker      *
2556*cfb92d14SAndroid Build Coastguard Worker      *  Used when operating in the Child role.
2557*cfb92d14SAndroid Build Coastguard Worker      */
2558*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_CHILD_TIMEOUT = SPINEL_PROP_THREAD_EXT__BEGIN + 0,
2559*cfb92d14SAndroid Build Coastguard Worker 
2560*cfb92d14SAndroid Build Coastguard Worker     /// Thread RLOC16
2561*cfb92d14SAndroid Build Coastguard Worker     /** Format: `S`
2562*cfb92d14SAndroid Build Coastguard Worker      *
2563*cfb92d14SAndroid Build Coastguard Worker      */
2564*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_RLOC16 = SPINEL_PROP_THREAD_EXT__BEGIN + 1,
2565*cfb92d14SAndroid Build Coastguard Worker 
2566*cfb92d14SAndroid Build Coastguard Worker     /// Thread Router Upgrade Threshold
2567*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
2568*cfb92d14SAndroid Build Coastguard Worker      *
2569*cfb92d14SAndroid Build Coastguard Worker      */
2570*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ROUTER_UPGRADE_THRESHOLD = SPINEL_PROP_THREAD_EXT__BEGIN + 2,
2571*cfb92d14SAndroid Build Coastguard Worker 
2572*cfb92d14SAndroid Build Coastguard Worker     /// Thread Context Reuse Delay
2573*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L`
2574*cfb92d14SAndroid Build Coastguard Worker      *
2575*cfb92d14SAndroid Build Coastguard Worker      */
2576*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY = SPINEL_PROP_THREAD_EXT__BEGIN + 3,
2577*cfb92d14SAndroid Build Coastguard Worker 
2578*cfb92d14SAndroid Build Coastguard Worker     /// Thread Network ID Timeout
2579*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
2580*cfb92d14SAndroid Build Coastguard Worker      *
2581*cfb92d14SAndroid Build Coastguard Worker      */
2582*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT = SPINEL_PROP_THREAD_EXT__BEGIN + 4,
2583*cfb92d14SAndroid Build Coastguard Worker 
2584*cfb92d14SAndroid Build Coastguard Worker     /// List of active thread router ids
2585*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(C)`
2586*cfb92d14SAndroid Build Coastguard Worker      *
2587*cfb92d14SAndroid Build Coastguard Worker      * Note that some implementations may not support CMD_GET_VALUE
2588*cfb92d14SAndroid Build Coastguard Worker      * router ids, but may support CMD_REMOVE_VALUE when the node is
2589*cfb92d14SAndroid Build Coastguard Worker      * a leader.
2590*cfb92d14SAndroid Build Coastguard Worker      *
2591*cfb92d14SAndroid Build Coastguard Worker      */
2592*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ACTIVE_ROUTER_IDS = SPINEL_PROP_THREAD_EXT__BEGIN + 5,
2593*cfb92d14SAndroid Build Coastguard Worker 
2594*cfb92d14SAndroid Build Coastguard Worker     /// Forward IPv6 packets that use RLOC16 addresses to HOST.
2595*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b`
2596*cfb92d14SAndroid Build Coastguard Worker      *
2597*cfb92d14SAndroid Build Coastguard Worker      * Allow host to directly observe all IPv6 packets received by the NCP,
2598*cfb92d14SAndroid Build Coastguard Worker      * including ones sent to the RLOC16 address.
2599*cfb92d14SAndroid Build Coastguard Worker      *
2600*cfb92d14SAndroid Build Coastguard Worker      * Default is false.
2601*cfb92d14SAndroid Build Coastguard Worker      *
2602*cfb92d14SAndroid Build Coastguard Worker      */
2603*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_RLOC16_DEBUG_PASSTHRU = SPINEL_PROP_THREAD_EXT__BEGIN + 6,
2604*cfb92d14SAndroid Build Coastguard Worker 
2605*cfb92d14SAndroid Build Coastguard Worker     /// Router Role Enabled
2606*cfb92d14SAndroid Build Coastguard Worker     /** Format `b`
2607*cfb92d14SAndroid Build Coastguard Worker      *
2608*cfb92d14SAndroid Build Coastguard Worker      * Allows host to indicate whether or not the router role is enabled.
2609*cfb92d14SAndroid Build Coastguard Worker      * If current role is a router, setting this property to `false` starts
2610*cfb92d14SAndroid Build Coastguard Worker      * a re-attach process as an end-device.
2611*cfb92d14SAndroid Build Coastguard Worker      *
2612*cfb92d14SAndroid Build Coastguard Worker      */
2613*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ROUTER_ROLE_ENABLED = SPINEL_PROP_THREAD_EXT__BEGIN + 7,
2614*cfb92d14SAndroid Build Coastguard Worker 
2615*cfb92d14SAndroid Build Coastguard Worker     /// Thread Router Downgrade Threshold
2616*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
2617*cfb92d14SAndroid Build Coastguard Worker      *
2618*cfb92d14SAndroid Build Coastguard Worker      */
2619*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD = SPINEL_PROP_THREAD_EXT__BEGIN + 8,
2620*cfb92d14SAndroid Build Coastguard Worker 
2621*cfb92d14SAndroid Build Coastguard Worker     /// Thread Router Selection Jitter
2622*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
2623*cfb92d14SAndroid Build Coastguard Worker      *
2624*cfb92d14SAndroid Build Coastguard Worker      */
2625*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER = SPINEL_PROP_THREAD_EXT__BEGIN + 9,
2626*cfb92d14SAndroid Build Coastguard Worker 
2627*cfb92d14SAndroid Build Coastguard Worker     /// Thread Preferred Router Id
2628*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C` - Write only
2629*cfb92d14SAndroid Build Coastguard Worker      *
2630*cfb92d14SAndroid Build Coastguard Worker      * Specifies the preferred Router Id. Upon becoming a router/leader the node
2631*cfb92d14SAndroid Build Coastguard Worker      * attempts to use this Router Id. If the preferred Router Id is not set or
2632*cfb92d14SAndroid Build Coastguard Worker      * if it can not be used, a randomly generated router id is picked. This
2633*cfb92d14SAndroid Build Coastguard Worker      * property can be set only when the device role is either detached or
2634*cfb92d14SAndroid Build Coastguard Worker      * disabled.
2635*cfb92d14SAndroid Build Coastguard Worker      *
2636*cfb92d14SAndroid Build Coastguard Worker      */
2637*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_PREFERRED_ROUTER_ID = SPINEL_PROP_THREAD_EXT__BEGIN + 10,
2638*cfb92d14SAndroid Build Coastguard Worker 
2639*cfb92d14SAndroid Build Coastguard Worker     /// Thread Neighbor Table
2640*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(ESLCcCbLLc))` - Read only
2641*cfb92d14SAndroid Build Coastguard Worker      *
2642*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
2643*cfb92d14SAndroid Build Coastguard Worker      *
2644*cfb92d14SAndroid Build Coastguard Worker      *  `E`: Extended address
2645*cfb92d14SAndroid Build Coastguard Worker      *  `S`: RLOC16
2646*cfb92d14SAndroid Build Coastguard Worker      *  `L`: Age (in seconds)
2647*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Link Quality In
2648*cfb92d14SAndroid Build Coastguard Worker      *  `c`: Average RSS (in dBm)
2649*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Mode (bit-flags)
2650*cfb92d14SAndroid Build Coastguard Worker      *  `b`: `true` if neighbor is a child, `false` otherwise.
2651*cfb92d14SAndroid Build Coastguard Worker      *  `L`: Link Frame Counter
2652*cfb92d14SAndroid Build Coastguard Worker      *  `L`: MLE Frame Counter
2653*cfb92d14SAndroid Build Coastguard Worker      *  `c`: The last RSSI (in dBm)
2654*cfb92d14SAndroid Build Coastguard Worker      *
2655*cfb92d14SAndroid Build Coastguard Worker      */
2656*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_NEIGHBOR_TABLE = SPINEL_PROP_THREAD_EXT__BEGIN + 11,
2657*cfb92d14SAndroid Build Coastguard Worker 
2658*cfb92d14SAndroid Build Coastguard Worker     /// Thread Max Child Count
2659*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
2660*cfb92d14SAndroid Build Coastguard Worker      *
2661*cfb92d14SAndroid Build Coastguard Worker      * Specifies the maximum number of children currently allowed.
2662*cfb92d14SAndroid Build Coastguard Worker      * This parameter can only be set when Thread protocol operation
2663*cfb92d14SAndroid Build Coastguard Worker      * has been stopped.
2664*cfb92d14SAndroid Build Coastguard Worker      *
2665*cfb92d14SAndroid Build Coastguard Worker      */
2666*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_CHILD_COUNT_MAX = SPINEL_PROP_THREAD_EXT__BEGIN + 12,
2667*cfb92d14SAndroid Build Coastguard Worker 
2668*cfb92d14SAndroid Build Coastguard Worker     /// Leader Network Data
2669*cfb92d14SAndroid Build Coastguard Worker     /** Format: `D` - Read only
2670*cfb92d14SAndroid Build Coastguard Worker      *
2671*cfb92d14SAndroid Build Coastguard Worker      */
2672*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LEADER_NETWORK_DATA = SPINEL_PROP_THREAD_EXT__BEGIN + 13,
2673*cfb92d14SAndroid Build Coastguard Worker 
2674*cfb92d14SAndroid Build Coastguard Worker     /// Stable Leader Network Data
2675*cfb92d14SAndroid Build Coastguard Worker     /** Format: `D` - Read only
2676*cfb92d14SAndroid Build Coastguard Worker      *
2677*cfb92d14SAndroid Build Coastguard Worker      */
2678*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_STABLE_LEADER_NETWORK_DATA = SPINEL_PROP_THREAD_EXT__BEGIN + 14,
2679*cfb92d14SAndroid Build Coastguard Worker 
2680*cfb92d14SAndroid Build Coastguard Worker     /// Thread Joiner Data
2681*cfb92d14SAndroid Build Coastguard Worker     /** Format `A(T(ULE))`
2682*cfb92d14SAndroid Build Coastguard Worker      *  PSKd, joiner timeout, eui64 (optional)
2683*cfb92d14SAndroid Build Coastguard Worker      *
2684*cfb92d14SAndroid Build Coastguard Worker      * This property is being deprecated by SPINEL_PROP_MESHCOP_COMMISSIONER_JOINERS.
2685*cfb92d14SAndroid Build Coastguard Worker      *
2686*cfb92d14SAndroid Build Coastguard Worker      */
2687*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_JOINERS = SPINEL_PROP_THREAD_EXT__BEGIN + 15,
2688*cfb92d14SAndroid Build Coastguard Worker 
2689*cfb92d14SAndroid Build Coastguard Worker     /// Thread Commissioner Enable
2690*cfb92d14SAndroid Build Coastguard Worker     /** Format `b`
2691*cfb92d14SAndroid Build Coastguard Worker      *
2692*cfb92d14SAndroid Build Coastguard Worker      * Default value is `false`.
2693*cfb92d14SAndroid Build Coastguard Worker      *
2694*cfb92d14SAndroid Build Coastguard Worker      * This property is being deprecated by SPINEL_PROP_MESHCOP_COMMISSIONER_STATE.
2695*cfb92d14SAndroid Build Coastguard Worker      *
2696*cfb92d14SAndroid Build Coastguard Worker      */
2697*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_COMMISSIONER_ENABLED = SPINEL_PROP_THREAD_EXT__BEGIN + 16,
2698*cfb92d14SAndroid Build Coastguard Worker 
2699*cfb92d14SAndroid Build Coastguard Worker     /// Thread TMF proxy enable
2700*cfb92d14SAndroid Build Coastguard Worker     /** Format `b`
2701*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_TMF_PROXY`
2702*cfb92d14SAndroid Build Coastguard Worker      *
2703*cfb92d14SAndroid Build Coastguard Worker      * This property is deprecated.
2704*cfb92d14SAndroid Build Coastguard Worker      *
2705*cfb92d14SAndroid Build Coastguard Worker      */
2706*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_TMF_PROXY_ENABLED = SPINEL_PROP_THREAD_EXT__BEGIN + 17,
2707*cfb92d14SAndroid Build Coastguard Worker 
2708*cfb92d14SAndroid Build Coastguard Worker     /// Thread TMF proxy stream
2709*cfb92d14SAndroid Build Coastguard Worker     /** Format `dSS`
2710*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_TMF_PROXY`
2711*cfb92d14SAndroid Build Coastguard Worker      *
2712*cfb92d14SAndroid Build Coastguard Worker      * This property is deprecated. Please see `SPINEL_PROP_THREAD_UDP_FORWARD_STREAM`.
2713*cfb92d14SAndroid Build Coastguard Worker      *
2714*cfb92d14SAndroid Build Coastguard Worker      */
2715*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_TMF_PROXY_STREAM = SPINEL_PROP_THREAD_EXT__BEGIN + 18,
2716*cfb92d14SAndroid Build Coastguard Worker 
2717*cfb92d14SAndroid Build Coastguard Worker     /// Thread "joiner" flag used during discovery scan operation
2718*cfb92d14SAndroid Build Coastguard Worker     /** Format `b`
2719*cfb92d14SAndroid Build Coastguard Worker      *
2720*cfb92d14SAndroid Build Coastguard Worker      * This property defines the Joiner Flag value in the Discovery Request TLV.
2721*cfb92d14SAndroid Build Coastguard Worker      *
2722*cfb92d14SAndroid Build Coastguard Worker      * Default value is `false`.
2723*cfb92d14SAndroid Build Coastguard Worker      *
2724*cfb92d14SAndroid Build Coastguard Worker      */
2725*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_DISCOVERY_SCAN_JOINER_FLAG = SPINEL_PROP_THREAD_EXT__BEGIN + 19,
2726*cfb92d14SAndroid Build Coastguard Worker 
2727*cfb92d14SAndroid Build Coastguard Worker     /// Enable EUI64 filtering for discovery scan operation.
2728*cfb92d14SAndroid Build Coastguard Worker     /** Format `b`
2729*cfb92d14SAndroid Build Coastguard Worker      *
2730*cfb92d14SAndroid Build Coastguard Worker      * Default value is `false`
2731*cfb92d14SAndroid Build Coastguard Worker      *
2732*cfb92d14SAndroid Build Coastguard Worker      */
2733*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_DISCOVERY_SCAN_ENABLE_FILTERING = SPINEL_PROP_THREAD_EXT__BEGIN + 20,
2734*cfb92d14SAndroid Build Coastguard Worker 
2735*cfb92d14SAndroid Build Coastguard Worker     /// PANID used for Discovery scan operation (used for PANID filtering).
2736*cfb92d14SAndroid Build Coastguard Worker     /** Format: `S`
2737*cfb92d14SAndroid Build Coastguard Worker      *
2738*cfb92d14SAndroid Build Coastguard Worker      * Default value is 0xffff (Broadcast PAN) to disable PANID filtering
2739*cfb92d14SAndroid Build Coastguard Worker      *
2740*cfb92d14SAndroid Build Coastguard Worker      */
2741*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_DISCOVERY_SCAN_PANID = SPINEL_PROP_THREAD_EXT__BEGIN + 21,
2742*cfb92d14SAndroid Build Coastguard Worker 
2743*cfb92d14SAndroid Build Coastguard Worker     /// Thread (out of band) steering data for MLE Discovery Response.
2744*cfb92d14SAndroid Build Coastguard Worker     /** Format `E` - Write only
2745*cfb92d14SAndroid Build Coastguard Worker      *
2746*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_OOB_STEERING_DATA.
2747*cfb92d14SAndroid Build Coastguard Worker      *
2748*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property allows to set/update the MLE
2749*cfb92d14SAndroid Build Coastguard Worker      * Discovery Response steering data out of band.
2750*cfb92d14SAndroid Build Coastguard Worker      *
2751*cfb92d14SAndroid Build Coastguard Worker      *  - All zeros to clear the steering data (indicating that
2752*cfb92d14SAndroid Build Coastguard Worker      *    there is no steering data).
2753*cfb92d14SAndroid Build Coastguard Worker      *  - All 0xFFs to set steering data/bloom filter to
2754*cfb92d14SAndroid Build Coastguard Worker      *    accept/allow all.
2755*cfb92d14SAndroid Build Coastguard Worker      *  - A specific EUI64 which is then added to current steering
2756*cfb92d14SAndroid Build Coastguard Worker      *    data/bloom filter.
2757*cfb92d14SAndroid Build Coastguard Worker      *
2758*cfb92d14SAndroid Build Coastguard Worker      */
2759*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_STEERING_DATA = SPINEL_PROP_THREAD_EXT__BEGIN + 22,
2760*cfb92d14SAndroid Build Coastguard Worker 
2761*cfb92d14SAndroid Build Coastguard Worker     /// Thread Router Table.
2762*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(ESCCCCCCb)` - Read only
2763*cfb92d14SAndroid Build Coastguard Worker      *
2764*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
2765*cfb92d14SAndroid Build Coastguard Worker      *
2766*cfb92d14SAndroid Build Coastguard Worker      *  `E`: IEEE 802.15.4 Extended Address
2767*cfb92d14SAndroid Build Coastguard Worker      *  `S`: RLOC16
2768*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Router ID
2769*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Next hop to router
2770*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Path cost to router
2771*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Link Quality In
2772*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Link Quality Out
2773*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Age (seconds since last heard)
2774*cfb92d14SAndroid Build Coastguard Worker      *  `b`: Link established with Router ID or not.
2775*cfb92d14SAndroid Build Coastguard Worker      *
2776*cfb92d14SAndroid Build Coastguard Worker      */
2777*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ROUTER_TABLE = SPINEL_PROP_THREAD_EXT__BEGIN + 23,
2778*cfb92d14SAndroid Build Coastguard Worker 
2779*cfb92d14SAndroid Build Coastguard Worker     /// Thread Active Operational Dataset
2780*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(iD))` - Read-Write
2781*cfb92d14SAndroid Build Coastguard Worker      *
2782*cfb92d14SAndroid Build Coastguard Worker      * This property provides access to current Thread Active Operational Dataset. A Thread device maintains the
2783*cfb92d14SAndroid Build Coastguard Worker      * Operational Dataset that it has stored locally and the one currently in use by the partition to which it is
2784*cfb92d14SAndroid Build Coastguard Worker      * attached. This property corresponds to the locally stored Dataset on the device.
2785*cfb92d14SAndroid Build Coastguard Worker      *
2786*cfb92d14SAndroid Build Coastguard Worker      * Operational Dataset consists of a set of supported properties (e.g., channel, network key, network name, PAN id,
2787*cfb92d14SAndroid Build Coastguard Worker      * etc). Note that not all supported properties may be present (have a value) in a Dataset.
2788*cfb92d14SAndroid Build Coastguard Worker      *
2789*cfb92d14SAndroid Build Coastguard Worker      * The Dataset value is encoded as an array of structs containing pairs of property key (as `i`) followed by the
2790*cfb92d14SAndroid Build Coastguard Worker      * property value (as `D`). The property value must follow the format associated with the corresponding property.
2791*cfb92d14SAndroid Build Coastguard Worker      *
2792*cfb92d14SAndroid Build Coastguard Worker      * On write, any unknown/unsupported property keys must be ignored.
2793*cfb92d14SAndroid Build Coastguard Worker      *
2794*cfb92d14SAndroid Build Coastguard Worker      * The following properties can be included in a Dataset list:
2795*cfb92d14SAndroid Build Coastguard Worker      *
2796*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_DATASET_ACTIVE_TIMESTAMP
2797*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_PHY_CHAN
2798*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_PHY_CHAN_SUPPORTED (Channel Mask Page 0)
2799*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_NET_NETWORK_KEY
2800*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_NET_NETWORK_NAME
2801*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_NET_XPANID
2802*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_MAC_15_4_PANID
2803*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_IPV6_ML_PREFIX
2804*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_NET_PSKC
2805*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_DATASET_SECURITY_POLICY
2806*cfb92d14SAndroid Build Coastguard Worker      *
2807*cfb92d14SAndroid Build Coastguard Worker      */
2808*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ACTIVE_DATASET = SPINEL_PROP_THREAD_EXT__BEGIN + 24,
2809*cfb92d14SAndroid Build Coastguard Worker 
2810*cfb92d14SAndroid Build Coastguard Worker     /// Thread Pending Operational Dataset
2811*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(iD))` - Read-Write
2812*cfb92d14SAndroid Build Coastguard Worker      *
2813*cfb92d14SAndroid Build Coastguard Worker      * This property provide access to current locally stored Pending Operational Dataset.
2814*cfb92d14SAndroid Build Coastguard Worker      *
2815*cfb92d14SAndroid Build Coastguard Worker      * The formatting of this property follows the same rules as in SPINEL_PROP_THREAD_ACTIVE_DATASET.
2816*cfb92d14SAndroid Build Coastguard Worker      *
2817*cfb92d14SAndroid Build Coastguard Worker      * In addition supported properties in SPINEL_PROP_THREAD_ACTIVE_DATASET, the following properties can also
2818*cfb92d14SAndroid Build Coastguard Worker      * be included in the Pending Dataset:
2819*cfb92d14SAndroid Build Coastguard Worker      *
2820*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_DATASET_PENDING_TIMESTAMP
2821*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_DATASET_DELAY_TIMER
2822*cfb92d14SAndroid Build Coastguard Worker      *
2823*cfb92d14SAndroid Build Coastguard Worker      */
2824*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_PENDING_DATASET = SPINEL_PROP_THREAD_EXT__BEGIN + 25,
2825*cfb92d14SAndroid Build Coastguard Worker 
2826*cfb92d14SAndroid Build Coastguard Worker     /// Send MGMT_SET Thread Active Operational Dataset
2827*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(iD))` - Write only
2828*cfb92d14SAndroid Build Coastguard Worker      *
2829*cfb92d14SAndroid Build Coastguard Worker      * The formatting of this property follows the same rules as in SPINEL_PROP_THREAD_ACTIVE_DATASET.
2830*cfb92d14SAndroid Build Coastguard Worker      *
2831*cfb92d14SAndroid Build Coastguard Worker      * This is write-only property. When written, it triggers a MGMT_ACTIVE_SET meshcop command to be sent to leader
2832*cfb92d14SAndroid Build Coastguard Worker      * with the given Dataset. The spinel frame response should be a `LAST_STATUS` with the status of the transmission
2833*cfb92d14SAndroid Build Coastguard Worker      * of MGMT_ACTIVE_SET command.
2834*cfb92d14SAndroid Build Coastguard Worker      *
2835*cfb92d14SAndroid Build Coastguard Worker      * In addition to supported properties in SPINEL_PROP_THREAD_ACTIVE_DATASET, the following property can be
2836*cfb92d14SAndroid Build Coastguard Worker      * included in the Dataset (to allow for custom raw TLVs):
2837*cfb92d14SAndroid Build Coastguard Worker      *
2838*cfb92d14SAndroid Build Coastguard Worker      *    SPINEL_PROP_DATASET_RAW_TLVS
2839*cfb92d14SAndroid Build Coastguard Worker      *
2840*cfb92d14SAndroid Build Coastguard Worker      */
2841*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET = SPINEL_PROP_THREAD_EXT__BEGIN + 26,
2842*cfb92d14SAndroid Build Coastguard Worker 
2843*cfb92d14SAndroid Build Coastguard Worker     /// Send MGMT_SET Thread Pending Operational Dataset
2844*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(iD))` - Write only
2845*cfb92d14SAndroid Build Coastguard Worker      *
2846*cfb92d14SAndroid Build Coastguard Worker      * This property is similar to SPINEL_PROP_THREAD_PENDING_DATASET and follows the same format and rules.
2847*cfb92d14SAndroid Build Coastguard Worker      *
2848*cfb92d14SAndroid Build Coastguard Worker      * In addition to supported properties in SPINEL_PROP_THREAD_PENDING_DATASET, the following property can be
2849*cfb92d14SAndroid Build Coastguard Worker      * included the Dataset (to allow for custom raw TLVs to be provided).
2850*cfb92d14SAndroid Build Coastguard Worker      *
2851*cfb92d14SAndroid Build Coastguard Worker      *    SPINEL_PROP_DATASET_RAW_TLVS
2852*cfb92d14SAndroid Build Coastguard Worker      *
2853*cfb92d14SAndroid Build Coastguard Worker      */
2854*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET = SPINEL_PROP_THREAD_EXT__BEGIN + 27,
2855*cfb92d14SAndroid Build Coastguard Worker 
2856*cfb92d14SAndroid Build Coastguard Worker     /// Operational Dataset Active Timestamp
2857*cfb92d14SAndroid Build Coastguard Worker     /** Format: `X` - No direct read or write
2858*cfb92d14SAndroid Build Coastguard Worker      *
2859*cfb92d14SAndroid Build Coastguard Worker      * It can only be included in one of the Dataset related properties below:
2860*cfb92d14SAndroid Build Coastguard Worker      *
2861*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_ACTIVE_DATASET
2862*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_PENDING_DATASET
2863*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET
2864*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET
2865*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET
2866*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
2867*cfb92d14SAndroid Build Coastguard Worker      *
2868*cfb92d14SAndroid Build Coastguard Worker      */
2869*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DATASET_ACTIVE_TIMESTAMP = SPINEL_PROP_THREAD_EXT__BEGIN + 28,
2870*cfb92d14SAndroid Build Coastguard Worker 
2871*cfb92d14SAndroid Build Coastguard Worker     /// Operational Dataset Pending Timestamp
2872*cfb92d14SAndroid Build Coastguard Worker     /** Format: `X` - No direct read or write
2873*cfb92d14SAndroid Build Coastguard Worker      *
2874*cfb92d14SAndroid Build Coastguard Worker      * It can only be included in one of the Pending Dataset properties:
2875*cfb92d14SAndroid Build Coastguard Worker      *
2876*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_PENDING_DATASET
2877*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET
2878*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
2879*cfb92d14SAndroid Build Coastguard Worker      *
2880*cfb92d14SAndroid Build Coastguard Worker      */
2881*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DATASET_PENDING_TIMESTAMP = SPINEL_PROP_THREAD_EXT__BEGIN + 29,
2882*cfb92d14SAndroid Build Coastguard Worker 
2883*cfb92d14SAndroid Build Coastguard Worker     /// Operational Dataset Delay Timer
2884*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` - No direct read or write
2885*cfb92d14SAndroid Build Coastguard Worker      *
2886*cfb92d14SAndroid Build Coastguard Worker      * Delay timer (in ms) specifies the time renaming until Thread devices overwrite the value in the Active
2887*cfb92d14SAndroid Build Coastguard Worker      * Operational Dataset with the corresponding values in the Pending Operational Dataset.
2888*cfb92d14SAndroid Build Coastguard Worker      *
2889*cfb92d14SAndroid Build Coastguard Worker      * It can only be included in one of the Pending Dataset properties:
2890*cfb92d14SAndroid Build Coastguard Worker      *
2891*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_PENDING_DATASET
2892*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET
2893*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
2894*cfb92d14SAndroid Build Coastguard Worker      *
2895*cfb92d14SAndroid Build Coastguard Worker      */
2896*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DATASET_DELAY_TIMER = SPINEL_PROP_THREAD_EXT__BEGIN + 30,
2897*cfb92d14SAndroid Build Coastguard Worker 
2898*cfb92d14SAndroid Build Coastguard Worker     /// Operational Dataset Security Policy
2899*cfb92d14SAndroid Build Coastguard Worker     /** Format: `SD` - No direct read or write
2900*cfb92d14SAndroid Build Coastguard Worker      *
2901*cfb92d14SAndroid Build Coastguard Worker      * It can only be included in one of the Dataset related properties below:
2902*cfb92d14SAndroid Build Coastguard Worker      *
2903*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_ACTIVE_DATASET
2904*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_PENDING_DATASET
2905*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET
2906*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET
2907*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET
2908*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
2909*cfb92d14SAndroid Build Coastguard Worker      *
2910*cfb92d14SAndroid Build Coastguard Worker      * Content is
2911*cfb92d14SAndroid Build Coastguard Worker      *   `S` : Key Rotation Time (in units of hour)
2912*cfb92d14SAndroid Build Coastguard Worker      *   `C` : Security Policy Flags (as specified in Thread 1.1 Section 8.10.1.15)
2913*cfb92d14SAndroid Build Coastguard Worker      *   `C` : Optional Security Policy Flags extension (as specified in Thread 1.2 Section 8.10.1.15).
2914*cfb92d14SAndroid Build Coastguard Worker      *         0xf8 is used if this field is missing.
2915*cfb92d14SAndroid Build Coastguard Worker      *
2916*cfb92d14SAndroid Build Coastguard Worker      */
2917*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DATASET_SECURITY_POLICY = SPINEL_PROP_THREAD_EXT__BEGIN + 31,
2918*cfb92d14SAndroid Build Coastguard Worker 
2919*cfb92d14SAndroid Build Coastguard Worker     /// Operational Dataset Additional Raw TLVs
2920*cfb92d14SAndroid Build Coastguard Worker     /** Format: `D` - No direct read or write
2921*cfb92d14SAndroid Build Coastguard Worker      *
2922*cfb92d14SAndroid Build Coastguard Worker      * This property defines extra raw TLVs that can be added to an Operational DataSet.
2923*cfb92d14SAndroid Build Coastguard Worker      *
2924*cfb92d14SAndroid Build Coastguard Worker      * It can only be included in one of the following Dataset properties:
2925*cfb92d14SAndroid Build Coastguard Worker      *
2926*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET
2927*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET
2928*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET
2929*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
2930*cfb92d14SAndroid Build Coastguard Worker      *
2931*cfb92d14SAndroid Build Coastguard Worker      */
2932*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DATASET_RAW_TLVS = SPINEL_PROP_THREAD_EXT__BEGIN + 32,
2933*cfb92d14SAndroid Build Coastguard Worker 
2934*cfb92d14SAndroid Build Coastguard Worker     /// Child table addresses
2935*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(ESA(6)))` - Read only
2936*cfb92d14SAndroid Build Coastguard Worker      *
2937*cfb92d14SAndroid Build Coastguard Worker      * This property provides the list of all addresses associated with every child
2938*cfb92d14SAndroid Build Coastguard Worker      * including any registered IPv6 addresses.
2939*cfb92d14SAndroid Build Coastguard Worker      *
2940*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
2941*cfb92d14SAndroid Build Coastguard Worker      *
2942*cfb92d14SAndroid Build Coastguard Worker      *  `E`: Extended address of the child
2943*cfb92d14SAndroid Build Coastguard Worker      *  `S`: RLOC16 of the child
2944*cfb92d14SAndroid Build Coastguard Worker      *  `A(6)`: List of IPv6 addresses registered by the child (if any)
2945*cfb92d14SAndroid Build Coastguard Worker      *
2946*cfb92d14SAndroid Build Coastguard Worker      */
2947*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_CHILD_TABLE_ADDRESSES = SPINEL_PROP_THREAD_EXT__BEGIN + 33,
2948*cfb92d14SAndroid Build Coastguard Worker 
2949*cfb92d14SAndroid Build Coastguard Worker     /// Neighbor Table Frame and Message Error Rates
2950*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(ESSScc))`
2951*cfb92d14SAndroid Build Coastguard Worker      *  Required capability: `CAP_ERROR_RATE_TRACKING`
2952*cfb92d14SAndroid Build Coastguard Worker      *
2953*cfb92d14SAndroid Build Coastguard Worker      * This property provides link quality related info including
2954*cfb92d14SAndroid Build Coastguard Worker      * frame and (IPv6) message error rates for all neighbors.
2955*cfb92d14SAndroid Build Coastguard Worker      *
2956*cfb92d14SAndroid Build Coastguard Worker      * With regards to message error rate, note that a larger (IPv6)
2957*cfb92d14SAndroid Build Coastguard Worker      * message can be fragmented and sent as multiple MAC frames. The
2958*cfb92d14SAndroid Build Coastguard Worker      * message transmission is considered a failure, if any of its
2959*cfb92d14SAndroid Build Coastguard Worker      * fragments fail after all MAC retry attempts.
2960*cfb92d14SAndroid Build Coastguard Worker      *
2961*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
2962*cfb92d14SAndroid Build Coastguard Worker      *
2963*cfb92d14SAndroid Build Coastguard Worker      *  `E`: Extended address of the neighbor
2964*cfb92d14SAndroid Build Coastguard Worker      *  `S`: RLOC16 of the neighbor
2965*cfb92d14SAndroid Build Coastguard Worker      *  `S`: Frame error rate (0 -> 0%, 0xffff -> 100%)
2966*cfb92d14SAndroid Build Coastguard Worker      *  `S`: Message error rate (0 -> 0%, 0xffff -> 100%)
2967*cfb92d14SAndroid Build Coastguard Worker      *  `c`: Average RSSI (in dBm)
2968*cfb92d14SAndroid Build Coastguard Worker      *  `c`: Last RSSI (in dBm)
2969*cfb92d14SAndroid Build Coastguard Worker      *
2970*cfb92d14SAndroid Build Coastguard Worker      */
2971*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_NEIGHBOR_TABLE_ERROR_RATES = SPINEL_PROP_THREAD_EXT__BEGIN + 34,
2972*cfb92d14SAndroid Build Coastguard Worker 
2973*cfb92d14SAndroid Build Coastguard Worker     /// EID (Endpoint Identifier) IPv6 Address Cache Table
2974*cfb92d14SAndroid Build Coastguard Worker     /** Format `A(t(6SCCt(bL6)t(bSS)))
2975*cfb92d14SAndroid Build Coastguard Worker      *
2976*cfb92d14SAndroid Build Coastguard Worker      * This property provides Thread EID address cache table.
2977*cfb92d14SAndroid Build Coastguard Worker      *
2978*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
2979*cfb92d14SAndroid Build Coastguard Worker      *
2980*cfb92d14SAndroid Build Coastguard Worker      *  `6` : Target IPv6 address
2981*cfb92d14SAndroid Build Coastguard Worker      *  `S` : RLOC16 of target
2982*cfb92d14SAndroid Build Coastguard Worker      *  `C` : Age (order of use, 0 indicates most recently used entry)
2983*cfb92d14SAndroid Build Coastguard Worker      *  `C` : Entry state (values are defined by enumeration `SPINEL_ADDRESS_CACHE_ENTRY_STATE_*`).
2984*cfb92d14SAndroid Build Coastguard Worker      *
2985*cfb92d14SAndroid Build Coastguard Worker      *  `t` : Info when state is `SPINEL_ADDRESS_CACHE_ENTRY_STATE_CACHED`
2986*cfb92d14SAndroid Build Coastguard Worker      *    `b` : Indicates whether last transaction time and ML-EID are valid.
2987*cfb92d14SAndroid Build Coastguard Worker      *    `L` : Last transaction time
2988*cfb92d14SAndroid Build Coastguard Worker      *    `6` : Mesh-local EID
2989*cfb92d14SAndroid Build Coastguard Worker      *
2990*cfb92d14SAndroid Build Coastguard Worker      *  `t` : Info when state is other than `SPINEL_ADDRESS_CACHE_ENTRY_STATE_CACHED`
2991*cfb92d14SAndroid Build Coastguard Worker      *    `b` : Indicates whether the entry can be evicted.
2992*cfb92d14SAndroid Build Coastguard Worker      *    `S` : Timeout in seconds
2993*cfb92d14SAndroid Build Coastguard Worker      *    `S` : Retry delay (applicable if in query-retry state).
2994*cfb92d14SAndroid Build Coastguard Worker      *
2995*cfb92d14SAndroid Build Coastguard Worker      */
2996*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ADDRESS_CACHE_TABLE = SPINEL_PROP_THREAD_EXT__BEGIN + 35,
2997*cfb92d14SAndroid Build Coastguard Worker 
2998*cfb92d14SAndroid Build Coastguard Worker     /// Thread UDP forward stream
2999*cfb92d14SAndroid Build Coastguard Worker     /** Format `dS6S`
3000*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_UDP_FORWARD`
3001*cfb92d14SAndroid Build Coastguard Worker      *
3002*cfb92d14SAndroid Build Coastguard Worker      * This property helps exchange UDP packets with host.
3003*cfb92d14SAndroid Build Coastguard Worker      *
3004*cfb92d14SAndroid Build Coastguard Worker      *  `d`: UDP payload
3005*cfb92d14SAndroid Build Coastguard Worker      *  `S`: Remote UDP port
3006*cfb92d14SAndroid Build Coastguard Worker      *  `6`: Remote IPv6 address
3007*cfb92d14SAndroid Build Coastguard Worker      *  `S`: Local UDP port
3008*cfb92d14SAndroid Build Coastguard Worker      *
3009*cfb92d14SAndroid Build Coastguard Worker      */
3010*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_UDP_FORWARD_STREAM = SPINEL_PROP_THREAD_EXT__BEGIN + 36,
3011*cfb92d14SAndroid Build Coastguard Worker 
3012*cfb92d14SAndroid Build Coastguard Worker     /// Send MGMT_GET Thread Active Operational Dataset
3013*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(iD))` - Write only
3014*cfb92d14SAndroid Build Coastguard Worker      *
3015*cfb92d14SAndroid Build Coastguard Worker      * The formatting of this property follows the same rules as in SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET. This
3016*cfb92d14SAndroid Build Coastguard Worker      * property further allows the sender to not include a value associated with properties in formatting of `t(iD)`,
3017*cfb92d14SAndroid Build Coastguard Worker      * i.e., it should accept either a `t(iD)` or a `t(i)` encoding (in both cases indicating that the associated
3018*cfb92d14SAndroid Build Coastguard Worker      * Dataset property should be requested as part of MGMT_GET command).
3019*cfb92d14SAndroid Build Coastguard Worker      *
3020*cfb92d14SAndroid Build Coastguard Worker      * This is write-only property. When written, it triggers a MGMT_ACTIVE_GET meshcop command to be sent to leader
3021*cfb92d14SAndroid Build Coastguard Worker      * requesting the Dataset related properties from the format. The spinel frame response should be a `LAST_STATUS`
3022*cfb92d14SAndroid Build Coastguard Worker      * with the status of the transmission of MGMT_ACTIVE_GET command.
3023*cfb92d14SAndroid Build Coastguard Worker      *
3024*cfb92d14SAndroid Build Coastguard Worker      * In addition to supported properties in SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET, the following property can be
3025*cfb92d14SAndroid Build Coastguard Worker      * optionally included in the Dataset:
3026*cfb92d14SAndroid Build Coastguard Worker      *
3027*cfb92d14SAndroid Build Coastguard Worker      *    SPINEL_PROP_DATASET_DEST_ADDRESS
3028*cfb92d14SAndroid Build Coastguard Worker      *
3029*cfb92d14SAndroid Build Coastguard Worker      */
3030*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET = SPINEL_PROP_THREAD_EXT__BEGIN + 37,
3031*cfb92d14SAndroid Build Coastguard Worker 
3032*cfb92d14SAndroid Build Coastguard Worker     /// Send MGMT_GET Thread Pending Operational Dataset
3033*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(iD))` - Write only
3034*cfb92d14SAndroid Build Coastguard Worker      *
3035*cfb92d14SAndroid Build Coastguard Worker      * The formatting of this property follows the same rules as in SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET.
3036*cfb92d14SAndroid Build Coastguard Worker      *
3037*cfb92d14SAndroid Build Coastguard Worker      * This is write-only property. When written, it triggers a MGMT_PENDING_GET meshcop command to be sent to leader
3038*cfb92d14SAndroid Build Coastguard Worker      * with the given Dataset. The spinel frame response should be a `LAST_STATUS` with the status of the transmission
3039*cfb92d14SAndroid Build Coastguard Worker      * of MGMT_PENDING_GET command.
3040*cfb92d14SAndroid Build Coastguard Worker      *
3041*cfb92d14SAndroid Build Coastguard Worker      */
3042*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET = SPINEL_PROP_THREAD_EXT__BEGIN + 38,
3043*cfb92d14SAndroid Build Coastguard Worker 
3044*cfb92d14SAndroid Build Coastguard Worker     /// Operational Dataset (MGMT_GET) Destination IPv6 Address
3045*cfb92d14SAndroid Build Coastguard Worker     /** Format: `6` - No direct read or write
3046*cfb92d14SAndroid Build Coastguard Worker      *
3047*cfb92d14SAndroid Build Coastguard Worker      * This property specifies the IPv6 destination when sending MGMT_GET command for either Active or Pending Dataset
3048*cfb92d14SAndroid Build Coastguard Worker      * if not provided, Leader ALOC address is used as default.
3049*cfb92d14SAndroid Build Coastguard Worker      *
3050*cfb92d14SAndroid Build Coastguard Worker      * It can only be included in one of the MGMT_GET Dataset properties:
3051*cfb92d14SAndroid Build Coastguard Worker      *
3052*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET
3053*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
3054*cfb92d14SAndroid Build Coastguard Worker      *
3055*cfb92d14SAndroid Build Coastguard Worker      */
3056*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DATASET_DEST_ADDRESS = SPINEL_PROP_THREAD_EXT__BEGIN + 39,
3057*cfb92d14SAndroid Build Coastguard Worker 
3058*cfb92d14SAndroid Build Coastguard Worker     /// Thread New Operational Dataset
3059*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(iD))` - Read only - FTD build only
3060*cfb92d14SAndroid Build Coastguard Worker      *
3061*cfb92d14SAndroid Build Coastguard Worker      * This property allows host to request NCP to create and return a new Operation Dataset to use when forming a new
3062*cfb92d14SAndroid Build Coastguard Worker      * network.
3063*cfb92d14SAndroid Build Coastguard Worker      *
3064*cfb92d14SAndroid Build Coastguard Worker      * Operational Dataset consists of a set of supported properties (e.g., channel, network key, network name, PAN id,
3065*cfb92d14SAndroid Build Coastguard Worker      * etc). Note that not all supported properties may be present (have a value) in a Dataset.
3066*cfb92d14SAndroid Build Coastguard Worker      *
3067*cfb92d14SAndroid Build Coastguard Worker      * The Dataset value is encoded as an array of structs containing pairs of property key (as `i`) followed by the
3068*cfb92d14SAndroid Build Coastguard Worker      * property value (as `D`). The property value must follow the format associated with the corresponding property.
3069*cfb92d14SAndroid Build Coastguard Worker      *
3070*cfb92d14SAndroid Build Coastguard Worker      * The following properties can be included in a Dataset list:
3071*cfb92d14SAndroid Build Coastguard Worker      *
3072*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_DATASET_ACTIVE_TIMESTAMP
3073*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_PHY_CHAN
3074*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_PHY_CHAN_SUPPORTED (Channel Mask Page 0)
3075*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_NET_NETWORK_KEY
3076*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_NET_NETWORK_NAME
3077*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_NET_XPANID
3078*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_MAC_15_4_PANID
3079*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_IPV6_ML_PREFIX
3080*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_NET_PSKC
3081*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_PROP_DATASET_SECURITY_POLICY
3082*cfb92d14SAndroid Build Coastguard Worker      *
3083*cfb92d14SAndroid Build Coastguard Worker      */
3084*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_NEW_DATASET = SPINEL_PROP_THREAD_EXT__BEGIN + 40,
3085*cfb92d14SAndroid Build Coastguard Worker 
3086*cfb92d14SAndroid Build Coastguard Worker     /// MAC CSL Period
3087*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L`
3088*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_CSL_RECEIVER`
3089*cfb92d14SAndroid Build Coastguard Worker      *
3090*cfb92d14SAndroid Build Coastguard Worker      * The CSL period in microseconds. Value of 0 indicates that CSL should be disabled.
3091*cfb92d14SAndroid Build Coastguard Worker      *
3092*cfb92d14SAndroid Build Coastguard Worker      * The CSL period MUST be a multiple of 160 (which is 802.15 "ten symbols time").
3093*cfb92d14SAndroid Build Coastguard Worker      *
3094*cfb92d14SAndroid Build Coastguard Worker      */
3095*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_CSL_PERIOD = SPINEL_PROP_THREAD_EXT__BEGIN + 41,
3096*cfb92d14SAndroid Build Coastguard Worker 
3097*cfb92d14SAndroid Build Coastguard Worker     /// MAC CSL Timeout
3098*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L`
3099*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_CSL_RECEIVER`
3100*cfb92d14SAndroid Build Coastguard Worker      *
3101*cfb92d14SAndroid Build Coastguard Worker      * The CSL timeout in seconds.
3102*cfb92d14SAndroid Build Coastguard Worker      */
3103*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_CSL_TIMEOUT = SPINEL_PROP_THREAD_EXT__BEGIN + 42,
3104*cfb92d14SAndroid Build Coastguard Worker 
3105*cfb92d14SAndroid Build Coastguard Worker     /// MAC CSL Channel
3106*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
3107*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_CSL_RECEIVER`
3108*cfb92d14SAndroid Build Coastguard Worker      *
3109*cfb92d14SAndroid Build Coastguard Worker      * The CSL channel as described in chapter 4.6.5.1.2 of the Thread v1.2.0 Specification.
3110*cfb92d14SAndroid Build Coastguard Worker      * Value of 0 means that CSL reception (if enabled) occurs on the Thread Network channel.
3111*cfb92d14SAndroid Build Coastguard Worker      * Value from range [11,26] is an alternative channel on which a CSL reception occurs.
3112*cfb92d14SAndroid Build Coastguard Worker      */
3113*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_CSL_CHANNEL = SPINEL_PROP_THREAD_EXT__BEGIN + 43,
3114*cfb92d14SAndroid Build Coastguard Worker 
3115*cfb92d14SAndroid Build Coastguard Worker     /// Thread Domain Name
3116*cfb92d14SAndroid Build Coastguard Worker     /** Format `U` - Read-write
3117*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
3118*cfb92d14SAndroid Build Coastguard Worker      *
3119*cfb92d14SAndroid Build Coastguard Worker      * This property is available since Thread 1.2.0.
3120*cfb92d14SAndroid Build Coastguard Worker      * Write to this property succeeds only when Thread protocols are disabled.
3121*cfb92d14SAndroid Build Coastguard Worker      *
3122*cfb92d14SAndroid Build Coastguard Worker      */
3123*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_DOMAIN_NAME = SPINEL_PROP_THREAD_EXT__BEGIN + 44,
3124*cfb92d14SAndroid Build Coastguard Worker 
3125*cfb92d14SAndroid Build Coastguard Worker     /// Link metrics query
3126*cfb92d14SAndroid Build Coastguard Worker     /** Format: `6CC` - Write-Only
3127*cfb92d14SAndroid Build Coastguard Worker      *
3128*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
3129*cfb92d14SAndroid Build Coastguard Worker      *
3130*cfb92d14SAndroid Build Coastguard Worker      * `6` : IPv6 destination address
3131*cfb92d14SAndroid Build Coastguard Worker      * `C` : Series id (0 for Single Probe)
3132*cfb92d14SAndroid Build Coastguard Worker      * `C` : List of requested metric ids encoded as bit fields in single byte
3133*cfb92d14SAndroid Build Coastguard Worker      *
3134*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
3135*cfb92d14SAndroid Build Coastguard Worker      *   |    Metric     | Id |
3136*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
3137*cfb92d14SAndroid Build Coastguard Worker      *   | Received PDUs |  0 |
3138*cfb92d14SAndroid Build Coastguard Worker      *   | LQI           |  1 |
3139*cfb92d14SAndroid Build Coastguard Worker      *   | Link margin   |  2 |
3140*cfb92d14SAndroid Build Coastguard Worker      *   | RSSI          |  3 |
3141*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
3142*cfb92d14SAndroid Build Coastguard Worker      *
3143*cfb92d14SAndroid Build Coastguard Worker      * If the query succeeds, the NCP will send a result to the Host using
3144*cfb92d14SAndroid Build Coastguard Worker      * @ref SPINEL_PROP_THREAD_LINK_METRICS_QUERY_RESULT.
3145*cfb92d14SAndroid Build Coastguard Worker      *
3146*cfb92d14SAndroid Build Coastguard Worker      */
3147*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LINK_METRICS_QUERY = SPINEL_PROP_THREAD_EXT__BEGIN + 45,
3148*cfb92d14SAndroid Build Coastguard Worker 
3149*cfb92d14SAndroid Build Coastguard Worker     /// Link metrics query result
3150*cfb92d14SAndroid Build Coastguard Worker     /** Format: `6Ct(A(t(CD)))` - Unsolicited notifications only
3151*cfb92d14SAndroid Build Coastguard Worker      *
3152*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
3153*cfb92d14SAndroid Build Coastguard Worker      *
3154*cfb92d14SAndroid Build Coastguard Worker      * `6` : IPv6 destination address
3155*cfb92d14SAndroid Build Coastguard Worker      * `C` : Status
3156*cfb92d14SAndroid Build Coastguard Worker      * `t(A(t(CD)))` : Array of structs encoded as following:
3157*cfb92d14SAndroid Build Coastguard Worker      *   `C` : Metric id
3158*cfb92d14SAndroid Build Coastguard Worker      *   `D` : Metric value
3159*cfb92d14SAndroid Build Coastguard Worker      *
3160*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+----------------+
3161*cfb92d14SAndroid Build Coastguard Worker      *   |    Metric     | Id |  Value format  |
3162*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+----------------+
3163*cfb92d14SAndroid Build Coastguard Worker      *   | Received PDUs |  0 | `L` (uint32_t) |
3164*cfb92d14SAndroid Build Coastguard Worker      *   | LQI           |  1 | `C` (uint8_t)  |
3165*cfb92d14SAndroid Build Coastguard Worker      *   | Link margin   |  2 | `C` (uint8_t)  |
3166*cfb92d14SAndroid Build Coastguard Worker      *   | RSSI          |  3 | `c` (int8_t)   |
3167*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+----------------+
3168*cfb92d14SAndroid Build Coastguard Worker      *
3169*cfb92d14SAndroid Build Coastguard Worker      */
3170*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LINK_METRICS_QUERY_RESULT = SPINEL_PROP_THREAD_EXT__BEGIN + 46,
3171*cfb92d14SAndroid Build Coastguard Worker 
3172*cfb92d14SAndroid Build Coastguard Worker     /// Link metrics probe
3173*cfb92d14SAndroid Build Coastguard Worker     /** Format `6CC` - Write only
3174*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
3175*cfb92d14SAndroid Build Coastguard Worker      *
3176*cfb92d14SAndroid Build Coastguard Worker      * Send a MLE Link Probe message to the peer.
3177*cfb92d14SAndroid Build Coastguard Worker      *
3178*cfb92d14SAndroid Build Coastguard Worker      * `6` : IPv6 destination address
3179*cfb92d14SAndroid Build Coastguard Worker      * `C` : The Series ID for which this Probe message targets at
3180*cfb92d14SAndroid Build Coastguard Worker      * `C` : The length of the Probe message, valid range: [0, 64]
3181*cfb92d14SAndroid Build Coastguard Worker      *
3182*cfb92d14SAndroid Build Coastguard Worker      */
3183*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LINK_METRICS_PROBE = SPINEL_PROP_THREAD_EXT__BEGIN + 47,
3184*cfb92d14SAndroid Build Coastguard Worker 
3185*cfb92d14SAndroid Build Coastguard Worker     /// Link metrics Enhanced-ACK Based Probing management
3186*cfb92d14SAndroid Build Coastguard Worker     /** Format: 6Cd - Write only
3187*cfb92d14SAndroid Build Coastguard Worker      *
3188*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
3189*cfb92d14SAndroid Build Coastguard Worker      *
3190*cfb92d14SAndroid Build Coastguard Worker      * `6` : IPv6 destination address
3191*cfb92d14SAndroid Build Coastguard Worker      * `C` : Indicate whether to register or clear the probing. `0` - clear, `1` - register
3192*cfb92d14SAndroid Build Coastguard Worker      * `C` : List of requested metric ids encoded as bit fields in single byte
3193*cfb92d14SAndroid Build Coastguard Worker      *
3194*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
3195*cfb92d14SAndroid Build Coastguard Worker      *   |    Metric     | Id |
3196*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
3197*cfb92d14SAndroid Build Coastguard Worker      *   | LQI           |  1 |
3198*cfb92d14SAndroid Build Coastguard Worker      *   | Link margin   |  2 |
3199*cfb92d14SAndroid Build Coastguard Worker      *   | RSSI          |  3 |
3200*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
3201*cfb92d14SAndroid Build Coastguard Worker      *
3202*cfb92d14SAndroid Build Coastguard Worker      * Result of configuration is reported asynchronously to the Host using the
3203*cfb92d14SAndroid Build Coastguard Worker      * @ref SPINEL_PROP_THREAD_LINK_METRICS_MGMT_RESPONSE.
3204*cfb92d14SAndroid Build Coastguard Worker      *
3205*cfb92d14SAndroid Build Coastguard Worker      * Whenever Enh-ACK IE report is received it is passed to the Host using the
3206*cfb92d14SAndroid Build Coastguard Worker      * @ref SPINEL_PROP_THREAD_LINK_METRICS_MGMT_ENH_ACK_IE property.
3207*cfb92d14SAndroid Build Coastguard Worker      *
3208*cfb92d14SAndroid Build Coastguard Worker      */
3209*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LINK_METRICS_MGMT_ENH_ACK = SPINEL_PROP_THREAD_EXT__BEGIN + 48,
3210*cfb92d14SAndroid Build Coastguard Worker 
3211*cfb92d14SAndroid Build Coastguard Worker     /// Link metrics Enhanced-ACK Based Probing IE report
3212*cfb92d14SAndroid Build Coastguard Worker     /** Format: SEA(t(CD)) - Unsolicited notifications only
3213*cfb92d14SAndroid Build Coastguard Worker      *
3214*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
3215*cfb92d14SAndroid Build Coastguard Worker      *
3216*cfb92d14SAndroid Build Coastguard Worker      * `S` : Short address of the Probing Subject
3217*cfb92d14SAndroid Build Coastguard Worker      * `E` : Extended address of the Probing Subject
3218*cfb92d14SAndroid Build Coastguard Worker      * `t(A(t(CD)))` : Struct that contains array of structs encoded as following:
3219*cfb92d14SAndroid Build Coastguard Worker      *   `C` : Metric id
3220*cfb92d14SAndroid Build Coastguard Worker      *   `D` : Metric value
3221*cfb92d14SAndroid Build Coastguard Worker      *
3222*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+----------------+
3223*cfb92d14SAndroid Build Coastguard Worker      *   |    Metric     | Id |  Value format  |
3224*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+----------------+
3225*cfb92d14SAndroid Build Coastguard Worker      *   | LQI           |  1 | `C` (uint8_t)  |
3226*cfb92d14SAndroid Build Coastguard Worker      *   | Link margin   |  2 | `C` (uint8_t)  |
3227*cfb92d14SAndroid Build Coastguard Worker      *   | RSSI          |  3 | `c` (int8_t)   |
3228*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+----------------+
3229*cfb92d14SAndroid Build Coastguard Worker      *
3230*cfb92d14SAndroid Build Coastguard Worker      */
3231*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LINK_METRICS_MGMT_ENH_ACK_IE = SPINEL_PROP_THREAD_EXT__BEGIN + 49,
3232*cfb92d14SAndroid Build Coastguard Worker 
3233*cfb92d14SAndroid Build Coastguard Worker     /// Link metrics Forward Tracking Series management
3234*cfb92d14SAndroid Build Coastguard Worker     /** Format: 6CCC - Write only
3235*cfb92d14SAndroid Build Coastguard Worker      *
3236*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
3237*cfb92d14SAndroid Build Coastguard Worker      *
3238*cfb92d14SAndroid Build Coastguard Worker      * `6` : IPv6 destination address
3239*cfb92d14SAndroid Build Coastguard Worker      * `C` : Series id
3240*cfb92d14SAndroid Build Coastguard Worker      * `C` : Tracked frame types encoded as bit fields in single byte, if equal to zero,
3241*cfb92d14SAndroid Build Coastguard Worker      *       accounting is stopped and a series is removed
3242*cfb92d14SAndroid Build Coastguard Worker      * `C` : Requested metric ids encoded as bit fields in single byte
3243*cfb92d14SAndroid Build Coastguard Worker      *
3244*cfb92d14SAndroid Build Coastguard Worker      *   +------------------+----+
3245*cfb92d14SAndroid Build Coastguard Worker      *   |    Frame type    | Id |
3246*cfb92d14SAndroid Build Coastguard Worker      *   +------------------+----+
3247*cfb92d14SAndroid Build Coastguard Worker      *   | MLE Link Probe   |  0 |
3248*cfb92d14SAndroid Build Coastguard Worker      *   | MAC Data         |  1 |
3249*cfb92d14SAndroid Build Coastguard Worker      *   | MAC Data Request |  2 |
3250*cfb92d14SAndroid Build Coastguard Worker      *   | MAC ACK          |  3 |
3251*cfb92d14SAndroid Build Coastguard Worker      *   +------------------+----+
3252*cfb92d14SAndroid Build Coastguard Worker      *
3253*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
3254*cfb92d14SAndroid Build Coastguard Worker      *   |    Metric     | Id |
3255*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
3256*cfb92d14SAndroid Build Coastguard Worker      *   | Received PDUs |  0 |
3257*cfb92d14SAndroid Build Coastguard Worker      *   | LQI           |  1 |
3258*cfb92d14SAndroid Build Coastguard Worker      *   | Link margin   |  2 |
3259*cfb92d14SAndroid Build Coastguard Worker      *   | RSSI          |  3 |
3260*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
3261*cfb92d14SAndroid Build Coastguard Worker      *
3262*cfb92d14SAndroid Build Coastguard Worker      * Result of configuration is reported asynchronously to the Host using the
3263*cfb92d14SAndroid Build Coastguard Worker      * @ref SPINEL_PROP_THREAD_LINK_METRICS_MGMT_RESPONSE.
3264*cfb92d14SAndroid Build Coastguard Worker      *
3265*cfb92d14SAndroid Build Coastguard Worker      */
3266*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LINK_METRICS_MGMT_FORWARD = SPINEL_PROP_THREAD_EXT__BEGIN + 50,
3267*cfb92d14SAndroid Build Coastguard Worker 
3268*cfb92d14SAndroid Build Coastguard Worker     /// Link metrics management response
3269*cfb92d14SAndroid Build Coastguard Worker     /** Format: 6C - Unsolicited notifications only
3270*cfb92d14SAndroid Build Coastguard Worker      *
3271*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
3272*cfb92d14SAndroid Build Coastguard Worker      *
3273*cfb92d14SAndroid Build Coastguard Worker      * `6` : IPv6 source address
3274*cfb92d14SAndroid Build Coastguard Worker      * `C` : Received status
3275*cfb92d14SAndroid Build Coastguard Worker      *
3276*cfb92d14SAndroid Build Coastguard Worker      */
3277*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_LINK_METRICS_MGMT_RESPONSE = SPINEL_PROP_THREAD_EXT__BEGIN + 51,
3278*cfb92d14SAndroid Build Coastguard Worker 
3279*cfb92d14SAndroid Build Coastguard Worker     /// Multicast Listeners Register Request
3280*cfb92d14SAndroid Build Coastguard Worker     /** Format `t(A(6))A(t(CD))` - Write-only
3281*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
3282*cfb92d14SAndroid Build Coastguard Worker      *
3283*cfb92d14SAndroid Build Coastguard Worker      * `t(A(6))`: Array of IPv6 multicast addresses
3284*cfb92d14SAndroid Build Coastguard Worker      * `A(t(CD))`: Array of structs holding optional parameters as follows
3285*cfb92d14SAndroid Build Coastguard Worker      *   `C`: Parameter id
3286*cfb92d14SAndroid Build Coastguard Worker      *   `D`: Parameter value
3287*cfb92d14SAndroid Build Coastguard Worker      *
3288*cfb92d14SAndroid Build Coastguard Worker      *   +----------------------------------------------------------------+
3289*cfb92d14SAndroid Build Coastguard Worker      *   | Id:   SPINEL_THREAD_MLR_PARAMID_TIMEOUT                        |
3290*cfb92d14SAndroid Build Coastguard Worker      *   | Type: `L`                                                      |
3291*cfb92d14SAndroid Build Coastguard Worker      *   | Description: Timeout in seconds. If this optional parameter is |
3292*cfb92d14SAndroid Build Coastguard Worker      *   |   omitted, the default value of the BBR will be used.          |
3293*cfb92d14SAndroid Build Coastguard Worker      *   | Special values:                                                |
3294*cfb92d14SAndroid Build Coastguard Worker      *   |   0 causes given addresses to be removed                       |
3295*cfb92d14SAndroid Build Coastguard Worker      *   |   0xFFFFFFFF is permanent and persistent registration          |
3296*cfb92d14SAndroid Build Coastguard Worker      *   +----------------------------------------------------------------+
3297*cfb92d14SAndroid Build Coastguard Worker      *
3298*cfb92d14SAndroid Build Coastguard Worker      * Write to this property initiates update of Multicast Listeners Table on the primary BBR.
3299*cfb92d14SAndroid Build Coastguard Worker      * If the write succeeded, the result of network operation will be notified later by the
3300*cfb92d14SAndroid Build Coastguard Worker      * SPINEL_PROP_THREAD_MLR_RESPONSE property. If the write fails, no MLR.req is issued and
3301*cfb92d14SAndroid Build Coastguard Worker      * notification through the SPINEL_PROP_THREAD_MLR_RESPONSE property will not occur.
3302*cfb92d14SAndroid Build Coastguard Worker      *
3303*cfb92d14SAndroid Build Coastguard Worker      */
3304*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_MLR_REQUEST = SPINEL_PROP_THREAD_EXT__BEGIN + 52,
3305*cfb92d14SAndroid Build Coastguard Worker 
3306*cfb92d14SAndroid Build Coastguard Worker     /// Multicast Listeners Register Response
3307*cfb92d14SAndroid Build Coastguard Worker     /** Format `CCt(A(6))` - Unsolicited notifications only
3308*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
3309*cfb92d14SAndroid Build Coastguard Worker      *
3310*cfb92d14SAndroid Build Coastguard Worker      * `C`: Status
3311*cfb92d14SAndroid Build Coastguard Worker      * `C`: MlrStatus (The Multicast Listener Registration Status)
3312*cfb92d14SAndroid Build Coastguard Worker      * `A(6)`: Array of IPv6 addresses that failed to be updated on the primary BBR
3313*cfb92d14SAndroid Build Coastguard Worker      *
3314*cfb92d14SAndroid Build Coastguard Worker      * This property is notified asynchronously when the NCP receives MLR.rsp following
3315*cfb92d14SAndroid Build Coastguard Worker      * previous write to the SPINEL_PROP_THREAD_MLR_REQUEST property.
3316*cfb92d14SAndroid Build Coastguard Worker      */
3317*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_MLR_RESPONSE = SPINEL_PROP_THREAD_EXT__BEGIN + 53,
3318*cfb92d14SAndroid Build Coastguard Worker 
3319*cfb92d14SAndroid Build Coastguard Worker     /// Interface Identifier specified for Thread Domain Unicast Address.
3320*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(C)` - Read-write
3321*cfb92d14SAndroid Build Coastguard Worker      *
3322*cfb92d14SAndroid Build Coastguard Worker      *   `A(C)`: Interface Identifier (8 bytes).
3323*cfb92d14SAndroid Build Coastguard Worker      *
3324*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_DUA
3325*cfb92d14SAndroid Build Coastguard Worker      *
3326*cfb92d14SAndroid Build Coastguard Worker      * If write to this property is performed without specified parameter
3327*cfb92d14SAndroid Build Coastguard Worker      * the Interface Identifier of the Thread Domain Unicast Address will be cleared.
3328*cfb92d14SAndroid Build Coastguard Worker      * If the DUA Interface Identifier is cleared on the NCP device,
3329*cfb92d14SAndroid Build Coastguard Worker      * the get spinel property command will be returned successfully without specified parameter.
3330*cfb92d14SAndroid Build Coastguard Worker      *
3331*cfb92d14SAndroid Build Coastguard Worker      */
3332*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_DUA_ID = SPINEL_PROP_THREAD_EXT__BEGIN + 54,
3333*cfb92d14SAndroid Build Coastguard Worker 
3334*cfb92d14SAndroid Build Coastguard Worker     /// Thread 1.2 Primary Backbone Router information in the Thread Network.
3335*cfb92d14SAndroid Build Coastguard Worker     /** Format: `SSLC` - Read-Only
3336*cfb92d14SAndroid Build Coastguard Worker      *
3337*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
3338*cfb92d14SAndroid Build Coastguard Worker      *
3339*cfb92d14SAndroid Build Coastguard Worker      * `S`: Server.
3340*cfb92d14SAndroid Build Coastguard Worker      * `S`: Reregistration Delay (in seconds).
3341*cfb92d14SAndroid Build Coastguard Worker      * `L`: Multicast Listener Registration Timeout (in seconds).
3342*cfb92d14SAndroid Build Coastguard Worker      * `C`: Sequence Number.
3343*cfb92d14SAndroid Build Coastguard Worker      *
3344*cfb92d14SAndroid Build Coastguard Worker      */
3345*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_BACKBONE_ROUTER_PRIMARY = SPINEL_PROP_THREAD_EXT__BEGIN + 55,
3346*cfb92d14SAndroid Build Coastguard Worker 
3347*cfb92d14SAndroid Build Coastguard Worker     /// Thread 1.2 Backbone Router local state.
3348*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C` - Read-Write
3349*cfb92d14SAndroid Build Coastguard Worker      *
3350*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_BACKBONE_ROUTER`
3351*cfb92d14SAndroid Build Coastguard Worker      *
3352*cfb92d14SAndroid Build Coastguard Worker      * The valid values are specified by SPINEL_THREAD_BACKBONE_ROUTER_STATE_<state> enumeration.
3353*cfb92d14SAndroid Build Coastguard Worker      * Backbone functionality will be disabled if SPINEL_THREAD_BACKBONE_ROUTER_STATE_DISABLED
3354*cfb92d14SAndroid Build Coastguard Worker      * is written to this property, enabled otherwise.
3355*cfb92d14SAndroid Build Coastguard Worker      *
3356*cfb92d14SAndroid Build Coastguard Worker      */
3357*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_STATE = SPINEL_PROP_THREAD_EXT__BEGIN + 56,
3358*cfb92d14SAndroid Build Coastguard Worker 
3359*cfb92d14SAndroid Build Coastguard Worker     /// Local Thread 1.2 Backbone Router configuration.
3360*cfb92d14SAndroid Build Coastguard Worker     /** Format: SLC - Read-Write
3361*cfb92d14SAndroid Build Coastguard Worker      *
3362*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_BACKBONE_ROUTER`
3363*cfb92d14SAndroid Build Coastguard Worker      *
3364*cfb92d14SAndroid Build Coastguard Worker      * `S`: Reregistration Delay (in seconds).
3365*cfb92d14SAndroid Build Coastguard Worker      * `L`: Multicast Listener Registration Timeout (in seconds).
3366*cfb92d14SAndroid Build Coastguard Worker      * `C`: Sequence Number.
3367*cfb92d14SAndroid Build Coastguard Worker      *
3368*cfb92d14SAndroid Build Coastguard Worker      */
3369*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_CONFIG = SPINEL_PROP_THREAD_EXT__BEGIN + 57,
3370*cfb92d14SAndroid Build Coastguard Worker 
3371*cfb92d14SAndroid Build Coastguard Worker     /// Register local Thread 1.2 Backbone Router configuration.
3372*cfb92d14SAndroid Build Coastguard Worker     /** Format: Empty (Write only).
3373*cfb92d14SAndroid Build Coastguard Worker      *
3374*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_BACKBONE_ROUTER`
3375*cfb92d14SAndroid Build Coastguard Worker      *
3376*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property (with any value) will register local Backbone Router configuration.
3377*cfb92d14SAndroid Build Coastguard Worker      *
3378*cfb92d14SAndroid Build Coastguard Worker      */
3379*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_REGISTER = SPINEL_PROP_THREAD_EXT__BEGIN + 58,
3380*cfb92d14SAndroid Build Coastguard Worker 
3381*cfb92d14SAndroid Build Coastguard Worker     /// Thread 1.2 Backbone Router registration jitter.
3382*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C` - Read-Write
3383*cfb92d14SAndroid Build Coastguard Worker      *
3384*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_THREAD_BACKBONE_ROUTER`
3385*cfb92d14SAndroid Build Coastguard Worker      *
3386*cfb92d14SAndroid Build Coastguard Worker      * `C`: Backbone Router registration jitter.
3387*cfb92d14SAndroid Build Coastguard Worker      *
3388*cfb92d14SAndroid Build Coastguard Worker      */
3389*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_REGISTRATION_JITTER = SPINEL_PROP_THREAD_EXT__BEGIN + 59,
3390*cfb92d14SAndroid Build Coastguard Worker 
3391*cfb92d14SAndroid Build Coastguard Worker     /// Thread Active Operational Dataset in raw TLVs format.
3392*cfb92d14SAndroid Build Coastguard Worker     /** Format: `D` - Read-Write
3393*cfb92d14SAndroid Build Coastguard Worker      *
3394*cfb92d14SAndroid Build Coastguard Worker      * This property provides access to the current Thread Active Operational Dataset. A Thread device maintains the
3395*cfb92d14SAndroid Build Coastguard Worker      * Operational Dataset that it has stored locally and the one currently in use by the partition to which it is
3396*cfb92d14SAndroid Build Coastguard Worker      * attached. This property corresponds to the locally stored Dataset on the device.
3397*cfb92d14SAndroid Build Coastguard Worker      *
3398*cfb92d14SAndroid Build Coastguard Worker      * On write, any unknown/unsupported TLVs must be ignored.
3399*cfb92d14SAndroid Build Coastguard Worker      *
3400*cfb92d14SAndroid Build Coastguard Worker      */
3401*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_ACTIVE_DATASET_TLVS = SPINEL_PROP_THREAD_EXT__BEGIN + 60,
3402*cfb92d14SAndroid Build Coastguard Worker 
3403*cfb92d14SAndroid Build Coastguard Worker     /// Thread Pending Operational Dataset in raw TLVs format.
3404*cfb92d14SAndroid Build Coastguard Worker     /** Format: `D` - Read-Write
3405*cfb92d14SAndroid Build Coastguard Worker      *
3406*cfb92d14SAndroid Build Coastguard Worker      * This property provides access to the current locally stored Pending Operational Dataset.
3407*cfb92d14SAndroid Build Coastguard Worker      *
3408*cfb92d14SAndroid Build Coastguard Worker      * The formatting of this property follows the same rules as in SPINEL_PROP_THREAD_ACTIVE_DATASET_TLVS.
3409*cfb92d14SAndroid Build Coastguard Worker      *
3410*cfb92d14SAndroid Build Coastguard Worker      * On write, any unknown/unsupported TLVs must be ignored.
3411*cfb92d14SAndroid Build Coastguard Worker      *
3412*cfb92d14SAndroid Build Coastguard Worker      */
3413*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_PENDING_DATASET_TLVS = SPINEL_PROP_THREAD_EXT__BEGIN + 61,
3414*cfb92d14SAndroid Build Coastguard Worker 
3415*cfb92d14SAndroid Build Coastguard Worker     /// Send MGMT_SET Thread Pending Operational Dataset (in TLV format).
3416*cfb92d14SAndroid Build Coastguard Worker     /** Format: `D` - Write only
3417*cfb92d14SAndroid Build Coastguard Worker      *
3418*cfb92d14SAndroid Build Coastguard Worker      * This is write-only property. When written, it triggers a MGMT_PENDING_SET meshcop command to be sent to leader
3419*cfb92d14SAndroid Build Coastguard Worker      * with the given Dataset.
3420*cfb92d14SAndroid Build Coastguard Worker      *
3421*cfb92d14SAndroid Build Coastguard Worker      * When setting this property, the spinel frame response will be:
3422*cfb92d14SAndroid Build Coastguard Worker      * 1. A `LAST_STATUS` with the status of the transmission of MGMT_PENDING_SET command if it fails.
3423*cfb92d14SAndroid Build Coastguard Worker      * 2. A `SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET_TLVS` with no content.
3424*cfb92d14SAndroid Build Coastguard Worker      *
3425*cfb92d14SAndroid Build Coastguard Worker      * On response reception or timeout, another notification will be sent to the host:
3426*cfb92d14SAndroid Build Coastguard Worker      * A `SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET_TLVS` with a spinel_status_t indicating
3427*cfb92d14SAndroid Build Coastguard Worker      * the result of MGMT_SET_PENDING.
3428*cfb92d14SAndroid Build Coastguard Worker      *
3429*cfb92d14SAndroid Build Coastguard Worker      * On write, any unknown/unsupported TLVs must be ignored.
3430*cfb92d14SAndroid Build Coastguard Worker      *
3431*cfb92d14SAndroid Build Coastguard Worker      */
3432*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET_TLVS = SPINEL_PROP_THREAD_EXT__BEGIN + 62,
3433*cfb92d14SAndroid Build Coastguard Worker 
3434*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_EXT__END = 0x1600,
3435*cfb92d14SAndroid Build Coastguard Worker 
3436*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6__BEGIN = 0x60,
3437*cfb92d14SAndroid Build Coastguard Worker 
3438*cfb92d14SAndroid Build Coastguard Worker     /// Link-Local IPv6 Address
3439*cfb92d14SAndroid Build Coastguard Worker     /** Format: `6` - Read only
3440*cfb92d14SAndroid Build Coastguard Worker      *
3441*cfb92d14SAndroid Build Coastguard Worker      */
3442*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6_LL_ADDR = SPINEL_PROP_IPV6__BEGIN + 0, ///< [6]
3443*cfb92d14SAndroid Build Coastguard Worker 
3444*cfb92d14SAndroid Build Coastguard Worker     /// Mesh Local IPv6 Address
3445*cfb92d14SAndroid Build Coastguard Worker     /** Format: `6` - Read only
3446*cfb92d14SAndroid Build Coastguard Worker      *
3447*cfb92d14SAndroid Build Coastguard Worker      */
3448*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6_ML_ADDR = SPINEL_PROP_IPV6__BEGIN + 1,
3449*cfb92d14SAndroid Build Coastguard Worker 
3450*cfb92d14SAndroid Build Coastguard Worker     /// Mesh Local Prefix
3451*cfb92d14SAndroid Build Coastguard Worker     /** Format: `6C` - Read-write
3452*cfb92d14SAndroid Build Coastguard Worker      *
3453*cfb92d14SAndroid Build Coastguard Worker      * Provides Mesh Local Prefix
3454*cfb92d14SAndroid Build Coastguard Worker      *
3455*cfb92d14SAndroid Build Coastguard Worker      *   `6`: Mesh local prefix
3456*cfb92d14SAndroid Build Coastguard Worker      *   `C` : Prefix length (64 bit for Thread).
3457*cfb92d14SAndroid Build Coastguard Worker      *
3458*cfb92d14SAndroid Build Coastguard Worker      */
3459*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6_ML_PREFIX = SPINEL_PROP_IPV6__BEGIN + 2,
3460*cfb92d14SAndroid Build Coastguard Worker 
3461*cfb92d14SAndroid Build Coastguard Worker     /// IPv6 (Unicast) Address Table
3462*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(6CLLC))`
3463*cfb92d14SAndroid Build Coastguard Worker      *
3464*cfb92d14SAndroid Build Coastguard Worker      * This property provides all unicast addresses.
3465*cfb92d14SAndroid Build Coastguard Worker      *
3466*cfb92d14SAndroid Build Coastguard Worker      * Array of structures containing:
3467*cfb92d14SAndroid Build Coastguard Worker      *
3468*cfb92d14SAndroid Build Coastguard Worker      *  `6`: IPv6 Address
3469*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Network Prefix Length (in bits)
3470*cfb92d14SAndroid Build Coastguard Worker      *  `L`: Preferred Lifetime
3471*cfb92d14SAndroid Build Coastguard Worker      *  `L`: Valid Lifetime
3472*cfb92d14SAndroid Build Coastguard Worker      *
3473*cfb92d14SAndroid Build Coastguard Worker      */
3474*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6_ADDRESS_TABLE = SPINEL_PROP_IPV6__BEGIN + 3,
3475*cfb92d14SAndroid Build Coastguard Worker 
3476*cfb92d14SAndroid Build Coastguard Worker     /// IPv6 Route Table - Deprecated
3477*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6_ROUTE_TABLE = SPINEL_PROP_IPV6__BEGIN + 4,
3478*cfb92d14SAndroid Build Coastguard Worker 
3479*cfb92d14SAndroid Build Coastguard Worker     /// IPv6 ICMP Ping Offload
3480*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b`
3481*cfb92d14SAndroid Build Coastguard Worker      *
3482*cfb92d14SAndroid Build Coastguard Worker      * Allow the NCP to directly respond to ICMP ping requests. If this is
3483*cfb92d14SAndroid Build Coastguard Worker      * turned on, ping request ICMP packets will not be passed to the host.
3484*cfb92d14SAndroid Build Coastguard Worker      *
3485*cfb92d14SAndroid Build Coastguard Worker      * Default value is `false`.
3486*cfb92d14SAndroid Build Coastguard Worker      */
3487*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD = SPINEL_PROP_IPV6__BEGIN + 5,
3488*cfb92d14SAndroid Build Coastguard Worker 
3489*cfb92d14SAndroid Build Coastguard Worker     /// IPv6 Multicast Address Table
3490*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(6))`
3491*cfb92d14SAndroid Build Coastguard Worker      *
3492*cfb92d14SAndroid Build Coastguard Worker      * This property provides all multicast addresses.
3493*cfb92d14SAndroid Build Coastguard Worker      *
3494*cfb92d14SAndroid Build Coastguard Worker      */
3495*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6_MULTICAST_ADDRESS_TABLE = SPINEL_PROP_IPV6__BEGIN + 6,
3496*cfb92d14SAndroid Build Coastguard Worker 
3497*cfb92d14SAndroid Build Coastguard Worker     /// IPv6 ICMP Ping Offload
3498*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
3499*cfb92d14SAndroid Build Coastguard Worker      *
3500*cfb92d14SAndroid Build Coastguard Worker      * Allow the NCP to directly respond to ICMP ping requests. If this is
3501*cfb92d14SAndroid Build Coastguard Worker      * turned on, ping request ICMP packets will not be passed to the host.
3502*cfb92d14SAndroid Build Coastguard Worker      *
3503*cfb92d14SAndroid Build Coastguard Worker      * This property allows enabling responses sent to unicast only, multicast
3504*cfb92d14SAndroid Build Coastguard Worker      * only, or both. The valid value are defined by enumeration
3505*cfb92d14SAndroid Build Coastguard Worker      * `spinel_ipv6_icmp_ping_offload_mode_t`.
3506*cfb92d14SAndroid Build Coastguard Worker      *
3507*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_IPV6_ICMP_PING_OFFLOAD_DISABLED       = 0
3508*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_IPV6_ICMP_PING_OFFLOAD_UNICAST_ONLY   = 1
3509*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_IPV6_ICMP_PING_OFFLOAD_MULTICAST_ONLY = 2
3510*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_IPV6_ICMP_PING_OFFLOAD_ALL            = 3
3511*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_IPV6_ICMP_PING_OFFLOAD_RLOC_ALOC_ONLY = 4
3512*cfb92d14SAndroid Build Coastguard Worker      *
3513*cfb92d14SAndroid Build Coastguard Worker      * Default value is `NET_IPV6_ICMP_PING_OFFLOAD_DISABLED`.
3514*cfb92d14SAndroid Build Coastguard Worker      *
3515*cfb92d14SAndroid Build Coastguard Worker      */
3516*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD_MODE = SPINEL_PROP_IPV6__BEGIN + 7, ///< [b]
3517*cfb92d14SAndroid Build Coastguard Worker 
3518*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6__END = 0x70,
3519*cfb92d14SAndroid Build Coastguard Worker 
3520*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6_EXT__BEGIN = 0x1600,
3521*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_IPV6_EXT__END   = 0x1700,
3522*cfb92d14SAndroid Build Coastguard Worker 
3523*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_STREAM__BEGIN = 0x70,
3524*cfb92d14SAndroid Build Coastguard Worker 
3525*cfb92d14SAndroid Build Coastguard Worker     /// Debug Stream
3526*cfb92d14SAndroid Build Coastguard Worker     /** Format: `U` (stream, read only)
3527*cfb92d14SAndroid Build Coastguard Worker      *
3528*cfb92d14SAndroid Build Coastguard Worker      * This property is a streaming property, meaning that you cannot explicitly
3529*cfb92d14SAndroid Build Coastguard Worker      * fetch the value of this property. The stream provides human-readable debugging
3530*cfb92d14SAndroid Build Coastguard Worker      * output which may be displayed in the host logs.
3531*cfb92d14SAndroid Build Coastguard Worker      *
3532*cfb92d14SAndroid Build Coastguard Worker      * The location of newline characters is not assumed by the host: it is
3533*cfb92d14SAndroid Build Coastguard Worker      * the NCP's responsibility to insert newline characters where needed,
3534*cfb92d14SAndroid Build Coastguard Worker      * just like with any other text stream.
3535*cfb92d14SAndroid Build Coastguard Worker      *
3536*cfb92d14SAndroid Build Coastguard Worker      * To receive the debugging stream, you wait for `CMD_PROP_VALUE_IS`
3537*cfb92d14SAndroid Build Coastguard Worker      * commands for this property from the NCP.
3538*cfb92d14SAndroid Build Coastguard Worker      *
3539*cfb92d14SAndroid Build Coastguard Worker      */
3540*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_STREAM_DEBUG = SPINEL_PROP_STREAM__BEGIN + 0,
3541*cfb92d14SAndroid Build Coastguard Worker 
3542*cfb92d14SAndroid Build Coastguard Worker     /// Raw Stream
3543*cfb92d14SAndroid Build Coastguard Worker     /** Format: `dD` (stream, read only)
3544*cfb92d14SAndroid Build Coastguard Worker      *  Required Capability: SPINEL_CAP_MAC_RAW or SPINEL_CAP_CONFIG_RADIO
3545*cfb92d14SAndroid Build Coastguard Worker      *
3546*cfb92d14SAndroid Build Coastguard Worker      * This stream provides the capability of sending and receiving raw 15.4 frames
3547*cfb92d14SAndroid Build Coastguard Worker      * to and from the radio. The exact format of the frame metadata and data is
3548*cfb92d14SAndroid Build Coastguard Worker      * dependent on the MAC and PHY being used.
3549*cfb92d14SAndroid Build Coastguard Worker      *
3550*cfb92d14SAndroid Build Coastguard Worker      * This property is a streaming property, meaning that you cannot explicitly
3551*cfb92d14SAndroid Build Coastguard Worker      * fetch the value of this property. To receive traffic, you wait for
3552*cfb92d14SAndroid Build Coastguard Worker      * `CMD_PROP_VALUE_IS` commands with this property id from the NCP.
3553*cfb92d14SAndroid Build Coastguard Worker      *
3554*cfb92d14SAndroid Build Coastguard Worker      * The general format of this property is:
3555*cfb92d14SAndroid Build Coastguard Worker      *
3556*cfb92d14SAndroid Build Coastguard Worker      *    `d` : frame data
3557*cfb92d14SAndroid Build Coastguard Worker      *    `D` : frame meta data
3558*cfb92d14SAndroid Build Coastguard Worker      *
3559*cfb92d14SAndroid Build Coastguard Worker      * The frame meta data is optional. Frame metadata MAY be empty or partially
3560*cfb92d14SAndroid Build Coastguard Worker      * specified. Partially specified metadata MUST be accepted. Default values
3561*cfb92d14SAndroid Build Coastguard Worker      * are used for all unspecified fields.
3562*cfb92d14SAndroid Build Coastguard Worker      *
3563*cfb92d14SAndroid Build Coastguard Worker      * The frame metadata field consists of the following fields:
3564*cfb92d14SAndroid Build Coastguard Worker      *
3565*cfb92d14SAndroid Build Coastguard Worker      *   `c` : Received Signal Strength (RSSI) in dBm - default is -128
3566*cfb92d14SAndroid Build Coastguard Worker      *   `c` : Noise floor in dBm - default is -128
3567*cfb92d14SAndroid Build Coastguard Worker      *   `S` : Flags (see below).
3568*cfb92d14SAndroid Build Coastguard Worker      *   `d` : PHY-specific data/struct
3569*cfb92d14SAndroid Build Coastguard Worker      *   `d` : Vendor-specific data/struct
3570*cfb92d14SAndroid Build Coastguard Worker      *
3571*cfb92d14SAndroid Build Coastguard Worker      * Flags fields are defined by the following enumeration bitfields:
3572*cfb92d14SAndroid Build Coastguard Worker      *
3573*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_MD_FLAG_TX       = 0x0001 :  Packet was transmitted, not received.
3574*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_MD_FLAG_BAD_FCS  = 0x0004 :  Packet was received with bad FCS
3575*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_MD_FLAG_DUPE     = 0x0008 :  Packet seems to be a duplicate
3576*cfb92d14SAndroid Build Coastguard Worker      *   SPINEL_MD_FLAG_RESERVED = 0xFFF2 :  Flags reserved for future use.
3577*cfb92d14SAndroid Build Coastguard Worker      *
3578*cfb92d14SAndroid Build Coastguard Worker      * The format of PHY-specific data for a Thread device contains the following
3579*cfb92d14SAndroid Build Coastguard Worker      * optional fields:
3580*cfb92d14SAndroid Build Coastguard Worker 
3581*cfb92d14SAndroid Build Coastguard Worker      *   `C` : 802.15.4 channel (Receive channel)
3582*cfb92d14SAndroid Build Coastguard Worker      *   `C` : IEEE 802.15.4 LQI
3583*cfb92d14SAndroid Build Coastguard Worker      *   `L` : The timestamp milliseconds
3584*cfb92d14SAndroid Build Coastguard Worker      *   `S` : The timestamp microseconds, offset to mMsec
3585*cfb92d14SAndroid Build Coastguard Worker      *
3586*cfb92d14SAndroid Build Coastguard Worker      * Frames written to this stream with `CMD_PROP_VALUE_SET` will be sent out
3587*cfb92d14SAndroid Build Coastguard Worker      * over the radio. This allows the caller to use the radio directly.
3588*cfb92d14SAndroid Build Coastguard Worker      *
3589*cfb92d14SAndroid Build Coastguard Worker      * The frame meta data for the `CMD_PROP_VALUE_SET` contains the following
3590*cfb92d14SAndroid Build Coastguard Worker      * fields.  Default values are used for all unspecified fields.
3591*cfb92d14SAndroid Build Coastguard Worker      *
3592*cfb92d14SAndroid Build Coastguard Worker      *  `C` : Channel (for frame tx) - MUST be included.
3593*cfb92d14SAndroid Build Coastguard Worker      *  `C` : Maximum number of backoffs attempts before declaring CCA failure
3594*cfb92d14SAndroid Build Coastguard Worker      *        (use Thread stack default if not specified)
3595*cfb92d14SAndroid Build Coastguard Worker      *  `C` : Maximum number of retries allowed after a transmission failure
3596*cfb92d14SAndroid Build Coastguard Worker      *        (use Thread stack default if not specified)
3597*cfb92d14SAndroid Build Coastguard Worker      *  `b` : Set to true to enable CSMA-CA for this packet, false otherwise.
3598*cfb92d14SAndroid Build Coastguard Worker      *        (default true).
3599*cfb92d14SAndroid Build Coastguard Worker      *  `b` : Set to true to indicate if header is updated - related to
3600*cfb92d14SAndroid Build Coastguard Worker      *        `mIsHeaderUpdated` in `otRadioFrame` (default false).
3601*cfb92d14SAndroid Build Coastguard Worker      *  `b` : Set to true to indicate it is a retransmission - related to
3602*cfb92d14SAndroid Build Coastguard Worker      *        `mIsARetx` in `otRadioFrame` (default false).
3603*cfb92d14SAndroid Build Coastguard Worker      *  `b` : Set to true to indicate security was processed on tx frame
3604*cfb92d14SAndroid Build Coastguard Worker      *        `mIsSecurityProcessed` in `otRadioFrame` (default false).
3605*cfb92d14SAndroid Build Coastguard Worker      *  `L` : TX delay interval used for CSL - related to `mTxDelay` in
3606*cfb92d14SAndroid Build Coastguard Worker      *        `otRadioFrame` (default zero).
3607*cfb92d14SAndroid Build Coastguard Worker      *  `L` : TX delay based time used for CSL - related to `mTxDelayBaseTime`
3608*cfb92d14SAndroid Build Coastguard Worker      *        in `otRadioFrame` (default zero).
3609*cfb92d14SAndroid Build Coastguard Worker      *  `C` : RX channel after TX done (default assumed to be same as
3610*cfb92d14SAndroid Build Coastguard Worker      *        channel in metadata)
3611*cfb92d14SAndroid Build Coastguard Worker      *
3612*cfb92d14SAndroid Build Coastguard Worker      */
3613*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_STREAM_RAW = SPINEL_PROP_STREAM__BEGIN + 1,
3614*cfb92d14SAndroid Build Coastguard Worker 
3615*cfb92d14SAndroid Build Coastguard Worker     /// (IPv6) Network Stream
3616*cfb92d14SAndroid Build Coastguard Worker     /** Format: `dD` (stream, read only)
3617*cfb92d14SAndroid Build Coastguard Worker      *
3618*cfb92d14SAndroid Build Coastguard Worker      * This stream provides the capability of sending and receiving (IPv6)
3619*cfb92d14SAndroid Build Coastguard Worker      * data packets to and from the currently attached network. The packets
3620*cfb92d14SAndroid Build Coastguard Worker      * are sent or received securely (encryption and authentication).
3621*cfb92d14SAndroid Build Coastguard Worker      *
3622*cfb92d14SAndroid Build Coastguard Worker      * This property is a streaming property, meaning that you cannot explicitly
3623*cfb92d14SAndroid Build Coastguard Worker      * fetch the value of this property. To receive traffic, you wait for
3624*cfb92d14SAndroid Build Coastguard Worker      * `CMD_PROP_VALUE_IS` commands with this property id from the NCP.
3625*cfb92d14SAndroid Build Coastguard Worker      *
3626*cfb92d14SAndroid Build Coastguard Worker      * To send network packets, you call `CMD_PROP_VALUE_SET` on this property with
3627*cfb92d14SAndroid Build Coastguard Worker      * the value of the packet.
3628*cfb92d14SAndroid Build Coastguard Worker      *
3629*cfb92d14SAndroid Build Coastguard Worker      * The general format of this property is:
3630*cfb92d14SAndroid Build Coastguard Worker      *
3631*cfb92d14SAndroid Build Coastguard Worker      *    `d` : packet data
3632*cfb92d14SAndroid Build Coastguard Worker      *    `D` : packet meta data
3633*cfb92d14SAndroid Build Coastguard Worker      *
3634*cfb92d14SAndroid Build Coastguard Worker      * The packet metadata is optional. Packet meta data MAY be empty or partially
3635*cfb92d14SAndroid Build Coastguard Worker      * specified. Partially specified metadata MUST be accepted. Default values
3636*cfb92d14SAndroid Build Coastguard Worker      * are used for all unspecified fields.
3637*cfb92d14SAndroid Build Coastguard Worker      *
3638*cfb92d14SAndroid Build Coastguard Worker      * For OpenThread the meta data is currently empty.
3639*cfb92d14SAndroid Build Coastguard Worker      *
3640*cfb92d14SAndroid Build Coastguard Worker      */
3641*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_STREAM_NET = SPINEL_PROP_STREAM__BEGIN + 2,
3642*cfb92d14SAndroid Build Coastguard Worker 
3643*cfb92d14SAndroid Build Coastguard Worker     /// (IPv6) Network Stream Insecure
3644*cfb92d14SAndroid Build Coastguard Worker     /** Format: `dD` (stream, read only)
3645*cfb92d14SAndroid Build Coastguard Worker      *
3646*cfb92d14SAndroid Build Coastguard Worker      * This stream provides the capability of sending and receiving unencrypted
3647*cfb92d14SAndroid Build Coastguard Worker      * and unauthenticated data packets to and from nearby devices for the
3648*cfb92d14SAndroid Build Coastguard Worker      * purposes of device commissioning.
3649*cfb92d14SAndroid Build Coastguard Worker      *
3650*cfb92d14SAndroid Build Coastguard Worker      * This property is a streaming property, meaning that you cannot explicitly
3651*cfb92d14SAndroid Build Coastguard Worker      * fetch the value of this property. To receive traffic, you wait for
3652*cfb92d14SAndroid Build Coastguard Worker      * `CMD_PROP_VALUE_IS` commands with this property id from the NCP.
3653*cfb92d14SAndroid Build Coastguard Worker      *
3654*cfb92d14SAndroid Build Coastguard Worker      * To send network packets, you call `CMD_PROP_VALUE_SET` on this property with
3655*cfb92d14SAndroid Build Coastguard Worker      * the value of the packet.
3656*cfb92d14SAndroid Build Coastguard Worker      *
3657*cfb92d14SAndroid Build Coastguard Worker      * The general format of this property is:
3658*cfb92d14SAndroid Build Coastguard Worker      *
3659*cfb92d14SAndroid Build Coastguard Worker      *    `d` : packet data
3660*cfb92d14SAndroid Build Coastguard Worker      *    `D` : packet meta data
3661*cfb92d14SAndroid Build Coastguard Worker      *
3662*cfb92d14SAndroid Build Coastguard Worker      * The packet metadata is optional. Packet meta data MAY be empty or partially
3663*cfb92d14SAndroid Build Coastguard Worker      * specified. Partially specified metadata MUST be accepted. Default values
3664*cfb92d14SAndroid Build Coastguard Worker      * are used for all unspecified fields.
3665*cfb92d14SAndroid Build Coastguard Worker      *
3666*cfb92d14SAndroid Build Coastguard Worker      * For OpenThread the meta data is currently empty.
3667*cfb92d14SAndroid Build Coastguard Worker      *
3668*cfb92d14SAndroid Build Coastguard Worker      */
3669*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_STREAM_NET_INSECURE = SPINEL_PROP_STREAM__BEGIN + 3,
3670*cfb92d14SAndroid Build Coastguard Worker 
3671*cfb92d14SAndroid Build Coastguard Worker     /// Log Stream
3672*cfb92d14SAndroid Build Coastguard Worker     /** Format: `UD` (stream, read only)
3673*cfb92d14SAndroid Build Coastguard Worker      *
3674*cfb92d14SAndroid Build Coastguard Worker      * This property is a read-only streaming property which provides
3675*cfb92d14SAndroid Build Coastguard Worker      * formatted log string from NCP. This property provides asynchronous
3676*cfb92d14SAndroid Build Coastguard Worker      * `CMD_PROP_VALUE_IS` updates with a new log string and includes
3677*cfb92d14SAndroid Build Coastguard Worker      * optional meta data.
3678*cfb92d14SAndroid Build Coastguard Worker      *
3679*cfb92d14SAndroid Build Coastguard Worker      *   `U`: The log string
3680*cfb92d14SAndroid Build Coastguard Worker      *   `D`: Log metadata (optional).
3681*cfb92d14SAndroid Build Coastguard Worker      *
3682*cfb92d14SAndroid Build Coastguard Worker      * Any data after the log string is considered metadata and is OPTIONAL.
3683*cfb92d14SAndroid Build Coastguard Worker      * Presence of `SPINEL_CAP_OPENTHREAD_LOG_METADATA` capability
3684*cfb92d14SAndroid Build Coastguard Worker      * indicates that OpenThread log metadata format is used as defined
3685*cfb92d14SAndroid Build Coastguard Worker      * below:
3686*cfb92d14SAndroid Build Coastguard Worker      *
3687*cfb92d14SAndroid Build Coastguard Worker      *    `C`: Log level (as per definition in enumeration
3688*cfb92d14SAndroid Build Coastguard Worker      *         `SPINEL_NCP_LOG_LEVEL_<level>`)
3689*cfb92d14SAndroid Build Coastguard Worker      *    `i`: OpenThread Log region (as per definition in enumeration
3690*cfb92d14SAndroid Build Coastguard Worker      *         `SPINEL_NCP_LOG_REGION_<region>).
3691*cfb92d14SAndroid Build Coastguard Worker      *    `X`: Log timestamp = <timestamp_base> + <current_time_ms>
3692*cfb92d14SAndroid Build Coastguard Worker      *
3693*cfb92d14SAndroid Build Coastguard Worker      */
3694*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_STREAM_LOG = SPINEL_PROP_STREAM__BEGIN + 4,
3695*cfb92d14SAndroid Build Coastguard Worker 
3696*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_STREAM__END = 0x80,
3697*cfb92d14SAndroid Build Coastguard Worker 
3698*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_STREAM_EXT__BEGIN = 0x1700,
3699*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_STREAM_EXT__END   = 0x1800,
3700*cfb92d14SAndroid Build Coastguard Worker 
3701*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP__BEGIN = 0x80,
3702*cfb92d14SAndroid Build Coastguard Worker 
3703*cfb92d14SAndroid Build Coastguard Worker     // Thread Joiner State
3704*cfb92d14SAndroid Build Coastguard Worker     /** Format `C` - Read Only
3705*cfb92d14SAndroid Build Coastguard Worker      *
3706*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_JOINER
3707*cfb92d14SAndroid Build Coastguard Worker      *
3708*cfb92d14SAndroid Build Coastguard Worker      * The valid values are specified by `spinel_meshcop_joiner_state_t` (`SPINEL_MESHCOP_JOINER_STATE_<state>`)
3709*cfb92d14SAndroid Build Coastguard Worker      * enumeration.
3710*cfb92d14SAndroid Build Coastguard Worker      *
3711*cfb92d14SAndroid Build Coastguard Worker      */
3712*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_JOINER_STATE = SPINEL_PROP_MESHCOP__BEGIN + 0, ///<[C]
3713*cfb92d14SAndroid Build Coastguard Worker 
3714*cfb92d14SAndroid Build Coastguard Worker     /// Thread Joiner Commissioning command and the parameters
3715*cfb92d14SAndroid Build Coastguard Worker     /** Format `b` or `bU(UUUUU)` (fields in parenthesis are optional) - Write Only
3716*cfb92d14SAndroid Build Coastguard Worker      *
3717*cfb92d14SAndroid Build Coastguard Worker      * This property starts or stops Joiner's commissioning process
3718*cfb92d14SAndroid Build Coastguard Worker      *
3719*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_JOINER
3720*cfb92d14SAndroid Build Coastguard Worker      *
3721*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property starts/stops the Joiner commissioning process.
3722*cfb92d14SAndroid Build Coastguard Worker      * The immediate `VALUE_IS` response indicates success/failure of the starting/stopping
3723*cfb92d14SAndroid Build Coastguard Worker      * the Joiner commissioning process.
3724*cfb92d14SAndroid Build Coastguard Worker      *
3725*cfb92d14SAndroid Build Coastguard Worker      * After a successful start operation, the join process outcome is reported through an
3726*cfb92d14SAndroid Build Coastguard Worker      * asynchronous `VALUE_IS(LAST_STATUS)` update with one of the following error status values:
3727*cfb92d14SAndroid Build Coastguard Worker      *
3728*cfb92d14SAndroid Build Coastguard Worker      *     - SPINEL_STATUS_JOIN_SUCCESS     the join process succeeded.
3729*cfb92d14SAndroid Build Coastguard Worker      *     - SPINEL_STATUS_JOIN_SECURITY    the join process failed due to security credentials.
3730*cfb92d14SAndroid Build Coastguard Worker      *     - SPINEL_STATUS_JOIN_NO_PEERS    no joinable network was discovered.
3731*cfb92d14SAndroid Build Coastguard Worker      *     - SPINEL_STATUS_JOIN_RSP_TIMEOUT if a response timed out.
3732*cfb92d14SAndroid Build Coastguard Worker      *     - SPINEL_STATUS_JOIN_FAILURE     join failure.
3733*cfb92d14SAndroid Build Coastguard Worker      *
3734*cfb92d14SAndroid Build Coastguard Worker      * Frame format:
3735*cfb92d14SAndroid Build Coastguard Worker      *
3736*cfb92d14SAndroid Build Coastguard Worker      *  `b` : Start or stop commissioning process (true to start).
3737*cfb92d14SAndroid Build Coastguard Worker      *
3738*cfb92d14SAndroid Build Coastguard Worker      * Only if the start commissioning.
3739*cfb92d14SAndroid Build Coastguard Worker      *
3740*cfb92d14SAndroid Build Coastguard Worker      *  `U` : Joiner's PSKd.
3741*cfb92d14SAndroid Build Coastguard Worker      *
3742*cfb92d14SAndroid Build Coastguard Worker      * The next fields are all optional. If not provided, OpenThread default values would be used.
3743*cfb92d14SAndroid Build Coastguard Worker      *
3744*cfb92d14SAndroid Build Coastguard Worker      *  `U` : Provisioning URL (use empty string if not required).
3745*cfb92d14SAndroid Build Coastguard Worker      *  `U` : Vendor Name. If not specified or empty string, use OpenThread default (PACKAGE_NAME).
3746*cfb92d14SAndroid Build Coastguard Worker      *  `U` : Vendor Model. If not specified or empty string, use OpenThread default (OPENTHREAD_CONFIG_PLATFORM_INFO).
3747*cfb92d14SAndroid Build Coastguard Worker      *  `U` : Vendor Sw Version. If not specified or empty string, use OpenThread default (PACKAGE_VERSION).
3748*cfb92d14SAndroid Build Coastguard Worker      *  `U` : Vendor Data String. Will not be appended if not specified.
3749*cfb92d14SAndroid Build Coastguard Worker      *
3750*cfb92d14SAndroid Build Coastguard Worker      */
3751*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING = SPINEL_PROP_MESHCOP__BEGIN + 1,
3752*cfb92d14SAndroid Build Coastguard Worker 
3753*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner State
3754*cfb92d14SAndroid Build Coastguard Worker     /** Format `C`
3755*cfb92d14SAndroid Build Coastguard Worker      *
3756*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3757*cfb92d14SAndroid Build Coastguard Worker      *
3758*cfb92d14SAndroid Build Coastguard Worker      * The valid values are specified by SPINEL_MESHCOP_COMMISSIONER_STATE_<state> enumeration.
3759*cfb92d14SAndroid Build Coastguard Worker      *
3760*cfb92d14SAndroid Build Coastguard Worker      */
3761*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_STATE = SPINEL_PROP_MESHCOP__BEGIN + 2,
3762*cfb92d14SAndroid Build Coastguard Worker 
3763*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner Joiners
3764*cfb92d14SAndroid Build Coastguard Worker     /** Format `A(t(t(E|CX)UL))` - get, insert or remove.
3765*cfb92d14SAndroid Build Coastguard Worker      *
3766*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3767*cfb92d14SAndroid Build Coastguard Worker      *
3768*cfb92d14SAndroid Build Coastguard Worker      * Data per array entry is:
3769*cfb92d14SAndroid Build Coastguard Worker      *
3770*cfb92d14SAndroid Build Coastguard Worker      *  `t()` | `t(E)` | `t(CX)` : Joiner info struct (formatting varies).
3771*cfb92d14SAndroid Build Coastguard Worker      *
3772*cfb92d14SAndroid Build Coastguard Worker      *   -  `t()` or empty struct indicates any joiner.
3773*cfb92d14SAndroid Build Coastguard Worker      *   -  `t(E)` specifies the Joiner EUI-64.
3774*cfb92d14SAndroid Build Coastguard Worker      *   -  `t(CX) specifies Joiner Discerner, `C` is Discerner length (in bits), and `X` is Discerner value.
3775*cfb92d14SAndroid Build Coastguard Worker      *
3776*cfb92d14SAndroid Build Coastguard Worker      * The struct is followed by:
3777*cfb92d14SAndroid Build Coastguard Worker      *
3778*cfb92d14SAndroid Build Coastguard Worker      *  `L` : Timeout after which to remove Joiner (when written should be in seconds, when read is in milliseconds)
3779*cfb92d14SAndroid Build Coastguard Worker      *  `U` : PSKd
3780*cfb92d14SAndroid Build Coastguard Worker      *
3781*cfb92d14SAndroid Build Coastguard Worker      * For CMD_PROP_VALUE_REMOVE the timeout and PSKd are optional.
3782*cfb92d14SAndroid Build Coastguard Worker      *
3783*cfb92d14SAndroid Build Coastguard Worker      */
3784*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_JOINERS = SPINEL_PROP_MESHCOP__BEGIN + 3,
3785*cfb92d14SAndroid Build Coastguard Worker 
3786*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner Provisioning URL
3787*cfb92d14SAndroid Build Coastguard Worker     /** Format `U`
3788*cfb92d14SAndroid Build Coastguard Worker      *
3789*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3790*cfb92d14SAndroid Build Coastguard Worker      *
3791*cfb92d14SAndroid Build Coastguard Worker      */
3792*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_PROVISIONING_URL = SPINEL_PROP_MESHCOP__BEGIN + 4,
3793*cfb92d14SAndroid Build Coastguard Worker 
3794*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner Session ID
3795*cfb92d14SAndroid Build Coastguard Worker     /** Format `S` - Read only
3796*cfb92d14SAndroid Build Coastguard Worker      *
3797*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3798*cfb92d14SAndroid Build Coastguard Worker      *
3799*cfb92d14SAndroid Build Coastguard Worker      */
3800*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_SESSION_ID = SPINEL_PROP_MESHCOP__BEGIN + 5,
3801*cfb92d14SAndroid Build Coastguard Worker 
3802*cfb92d14SAndroid Build Coastguard Worker     /// Thread Joiner Discerner
3803*cfb92d14SAndroid Build Coastguard Worker     /** Format `CX`  - Read-write
3804*cfb92d14SAndroid Build Coastguard Worker      *
3805*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_JOINER
3806*cfb92d14SAndroid Build Coastguard Worker      *
3807*cfb92d14SAndroid Build Coastguard Worker      * This property represents a Joiner Discerner.
3808*cfb92d14SAndroid Build Coastguard Worker      *
3809*cfb92d14SAndroid Build Coastguard Worker      * The Joiner Discerner is used to calculate the Joiner ID used during commissioning/joining process.
3810*cfb92d14SAndroid Build Coastguard Worker      *
3811*cfb92d14SAndroid Build Coastguard Worker      * By default (when a discerner is not provided or cleared), Joiner ID is derived as first 64 bits of the result
3812*cfb92d14SAndroid Build Coastguard Worker      * of computing SHA-256 over factory-assigned IEEE EUI-64. Note that this is the main behavior expected by Thread
3813*cfb92d14SAndroid Build Coastguard Worker      * specification.
3814*cfb92d14SAndroid Build Coastguard Worker      *
3815*cfb92d14SAndroid Build Coastguard Worker      * Format:
3816*cfb92d14SAndroid Build Coastguard Worker      *
3817*cfb92d14SAndroid Build Coastguard Worker      *   'C' : The Joiner Discerner bit length (number of bits).
3818*cfb92d14SAndroid Build Coastguard Worker      *   `X` : The Joiner Discerner value (64-bit unsigned)  - Only present/applicable when length is non-zero.
3819*cfb92d14SAndroid Build Coastguard Worker      *
3820*cfb92d14SAndroid Build Coastguard Worker      * When writing to this property, the length can be set to zero to clear any previously set Joiner Discerner value.
3821*cfb92d14SAndroid Build Coastguard Worker      *
3822*cfb92d14SAndroid Build Coastguard Worker      * When reading this property if there is no currently set Joiner Discerner, zero is returned as the length (with
3823*cfb92d14SAndroid Build Coastguard Worker      * no value field).
3824*cfb92d14SAndroid Build Coastguard Worker      *
3825*cfb92d14SAndroid Build Coastguard Worker      */
3826*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_JOINER_DISCERNER = SPINEL_PROP_MESHCOP__BEGIN + 6,
3827*cfb92d14SAndroid Build Coastguard Worker 
3828*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP__END = 0x90,
3829*cfb92d14SAndroid Build Coastguard Worker 
3830*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_EXT__BEGIN = 0x1800,
3831*cfb92d14SAndroid Build Coastguard Worker 
3832*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner Announce Begin
3833*cfb92d14SAndroid Build Coastguard Worker     /** Format `LCS6` - Write only
3834*cfb92d14SAndroid Build Coastguard Worker      *
3835*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3836*cfb92d14SAndroid Build Coastguard Worker      *
3837*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property sends an Announce Begin message with the specified parameters. Response is a
3838*cfb92d14SAndroid Build Coastguard Worker      * `LAST_STATUS` update with status of operation.
3839*cfb92d14SAndroid Build Coastguard Worker      *
3840*cfb92d14SAndroid Build Coastguard Worker      *   `L` : Channel mask
3841*cfb92d14SAndroid Build Coastguard Worker      *   `C` : Number of messages per channel
3842*cfb92d14SAndroid Build Coastguard Worker      *   `S` : The time between two successive MLE Announce transmissions (milliseconds)
3843*cfb92d14SAndroid Build Coastguard Worker      *   `6` : IPv6 destination
3844*cfb92d14SAndroid Build Coastguard Worker      *
3845*cfb92d14SAndroid Build Coastguard Worker      */
3846*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_ANNOUNCE_BEGIN = SPINEL_PROP_MESHCOP_EXT__BEGIN + 0,
3847*cfb92d14SAndroid Build Coastguard Worker 
3848*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner Energy Scan Query
3849*cfb92d14SAndroid Build Coastguard Worker     /** Format `LCSS6` - Write only
3850*cfb92d14SAndroid Build Coastguard Worker      *
3851*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3852*cfb92d14SAndroid Build Coastguard Worker      *
3853*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property sends an Energy Scan Query message with the specified parameters. Response is a
3854*cfb92d14SAndroid Build Coastguard Worker      * `LAST_STATUS` with status of operation. The energy scan results are emitted asynchronously through
3855*cfb92d14SAndroid Build Coastguard Worker      * `SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN_RESULT` updates.
3856*cfb92d14SAndroid Build Coastguard Worker      *
3857*cfb92d14SAndroid Build Coastguard Worker      * Format is:
3858*cfb92d14SAndroid Build Coastguard Worker      *
3859*cfb92d14SAndroid Build Coastguard Worker      *   `L` : Channel mask
3860*cfb92d14SAndroid Build Coastguard Worker      *   `C` : The number of energy measurements per channel
3861*cfb92d14SAndroid Build Coastguard Worker      *   `S` : The time between energy measurements (milliseconds)
3862*cfb92d14SAndroid Build Coastguard Worker      *   `S` : The scan duration for each energy measurement (milliseconds)
3863*cfb92d14SAndroid Build Coastguard Worker      *   `6` : IPv6 destination.
3864*cfb92d14SAndroid Build Coastguard Worker      *
3865*cfb92d14SAndroid Build Coastguard Worker      */
3866*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN = SPINEL_PROP_MESHCOP_EXT__BEGIN + 1,
3867*cfb92d14SAndroid Build Coastguard Worker 
3868*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner Energy Scan Result
3869*cfb92d14SAndroid Build Coastguard Worker     /** Format `Ld` - Asynchronous event only
3870*cfb92d14SAndroid Build Coastguard Worker      *
3871*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3872*cfb92d14SAndroid Build Coastguard Worker      *
3873*cfb92d14SAndroid Build Coastguard Worker      * This property provides asynchronous `CMD_PROP_VALUE_INSERTED` updates to report energy scan results for a
3874*cfb92d14SAndroid Build Coastguard Worker      * previously sent Energy Scan Query message (please see `SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN`).
3875*cfb92d14SAndroid Build Coastguard Worker      *
3876*cfb92d14SAndroid Build Coastguard Worker      * Format is:
3877*cfb92d14SAndroid Build Coastguard Worker      *
3878*cfb92d14SAndroid Build Coastguard Worker      *   `L` : Channel mask
3879*cfb92d14SAndroid Build Coastguard Worker      *   `d` : Energy measurement data (note that `d` encoding includes the length)
3880*cfb92d14SAndroid Build Coastguard Worker      *
3881*cfb92d14SAndroid Build Coastguard Worker      */
3882*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN_RESULT = SPINEL_PROP_MESHCOP_EXT__BEGIN + 2,
3883*cfb92d14SAndroid Build Coastguard Worker 
3884*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner PAN ID Query
3885*cfb92d14SAndroid Build Coastguard Worker     /** Format `SL6` - Write only
3886*cfb92d14SAndroid Build Coastguard Worker      *
3887*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3888*cfb92d14SAndroid Build Coastguard Worker      *
3889*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property sends a PAN ID Query message with the specified parameters. Response is a
3890*cfb92d14SAndroid Build Coastguard Worker      * `LAST_STATUS` with status of operation. The PAN ID Conflict results are emitted asynchronously through
3891*cfb92d14SAndroid Build Coastguard Worker      * `SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_CONFLICT_RESULT` updates.
3892*cfb92d14SAndroid Build Coastguard Worker      *
3893*cfb92d14SAndroid Build Coastguard Worker      * Format is:
3894*cfb92d14SAndroid Build Coastguard Worker      *
3895*cfb92d14SAndroid Build Coastguard Worker      *   `S` : PAN ID to query
3896*cfb92d14SAndroid Build Coastguard Worker      *   `L` : Channel mask
3897*cfb92d14SAndroid Build Coastguard Worker      *   `6` : IPv6 destination
3898*cfb92d14SAndroid Build Coastguard Worker      *
3899*cfb92d14SAndroid Build Coastguard Worker      */
3900*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_QUERY = SPINEL_PROP_MESHCOP_EXT__BEGIN + 3,
3901*cfb92d14SAndroid Build Coastguard Worker 
3902*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner PAN ID Conflict Result
3903*cfb92d14SAndroid Build Coastguard Worker     /** Format `SL` - Asynchronous event only
3904*cfb92d14SAndroid Build Coastguard Worker      *
3905*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3906*cfb92d14SAndroid Build Coastguard Worker      *
3907*cfb92d14SAndroid Build Coastguard Worker      * This property provides asynchronous `CMD_PROP_VALUE_INSERTED` updates to report PAN ID conflict results for a
3908*cfb92d14SAndroid Build Coastguard Worker      * previously sent PAN ID Query message (please see `SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_QUERY`).
3909*cfb92d14SAndroid Build Coastguard Worker      *
3910*cfb92d14SAndroid Build Coastguard Worker      * Format is:
3911*cfb92d14SAndroid Build Coastguard Worker      *
3912*cfb92d14SAndroid Build Coastguard Worker      *   `S` : The PAN ID
3913*cfb92d14SAndroid Build Coastguard Worker      *   `L` : Channel mask
3914*cfb92d14SAndroid Build Coastguard Worker      *
3915*cfb92d14SAndroid Build Coastguard Worker      */
3916*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_CONFLICT_RESULT = SPINEL_PROP_MESHCOP_EXT__BEGIN + 4,
3917*cfb92d14SAndroid Build Coastguard Worker 
3918*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner Send MGMT_COMMISSIONER_GET
3919*cfb92d14SAndroid Build Coastguard Worker     /** Format `d` - Write only
3920*cfb92d14SAndroid Build Coastguard Worker      *
3921*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3922*cfb92d14SAndroid Build Coastguard Worker      *
3923*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property sends a MGMT_COMMISSIONER_GET message with the specified parameters. Response is a
3924*cfb92d14SAndroid Build Coastguard Worker      * `LAST_STATUS` with status of operation.
3925*cfb92d14SAndroid Build Coastguard Worker      *
3926*cfb92d14SAndroid Build Coastguard Worker      * Format is:
3927*cfb92d14SAndroid Build Coastguard Worker      *
3928*cfb92d14SAndroid Build Coastguard Worker      *   `d` : List of TLV types to get
3929*cfb92d14SAndroid Build Coastguard Worker      *
3930*cfb92d14SAndroid Build Coastguard Worker      */
3931*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_MGMT_GET = SPINEL_PROP_MESHCOP_EXT__BEGIN + 5,
3932*cfb92d14SAndroid Build Coastguard Worker 
3933*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner Send MGMT_COMMISSIONER_SET
3934*cfb92d14SAndroid Build Coastguard Worker     /** Format `d` - Write only
3935*cfb92d14SAndroid Build Coastguard Worker      *
3936*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3937*cfb92d14SAndroid Build Coastguard Worker      *
3938*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property sends a MGMT_COMMISSIONER_SET message with the specified parameters. Response is a
3939*cfb92d14SAndroid Build Coastguard Worker      * `LAST_STATUS` with status of operation.
3940*cfb92d14SAndroid Build Coastguard Worker      *
3941*cfb92d14SAndroid Build Coastguard Worker      * Format is:
3942*cfb92d14SAndroid Build Coastguard Worker      *
3943*cfb92d14SAndroid Build Coastguard Worker      *   `d` : TLV encoded data
3944*cfb92d14SAndroid Build Coastguard Worker      *
3945*cfb92d14SAndroid Build Coastguard Worker      */
3946*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_MGMT_SET = SPINEL_PROP_MESHCOP_EXT__BEGIN + 6,
3947*cfb92d14SAndroid Build Coastguard Worker 
3948*cfb92d14SAndroid Build Coastguard Worker     // Thread Commissioner Generate PSKc
3949*cfb92d14SAndroid Build Coastguard Worker     /** Format: `UUd` - Write only
3950*cfb92d14SAndroid Build Coastguard Worker      *
3951*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
3952*cfb92d14SAndroid Build Coastguard Worker      *
3953*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property allows user to generate PSKc from a given commissioning pass-phrase, network name,
3954*cfb92d14SAndroid Build Coastguard Worker      * extended PAN Id.
3955*cfb92d14SAndroid Build Coastguard Worker      *
3956*cfb92d14SAndroid Build Coastguard Worker      * Written value format is:
3957*cfb92d14SAndroid Build Coastguard Worker      *
3958*cfb92d14SAndroid Build Coastguard Worker      *   `U` : The commissioning pass-phrase.
3959*cfb92d14SAndroid Build Coastguard Worker      *   `U` : Network Name.
3960*cfb92d14SAndroid Build Coastguard Worker      *   `d` : Extended PAN ID.
3961*cfb92d14SAndroid Build Coastguard Worker      *
3962*cfb92d14SAndroid Build Coastguard Worker      * The response on success would be a `VALUE_IS` command with the PSKc with format below:
3963*cfb92d14SAndroid Build Coastguard Worker      *
3964*cfb92d14SAndroid Build Coastguard Worker      *   `D` : The PSKc
3965*cfb92d14SAndroid Build Coastguard Worker      *
3966*cfb92d14SAndroid Build Coastguard Worker      * On a failure a `LAST_STATUS` is emitted with the error status.
3967*cfb92d14SAndroid Build Coastguard Worker      *
3968*cfb92d14SAndroid Build Coastguard Worker      */
3969*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_COMMISSIONER_GENERATE_PSKC = SPINEL_PROP_MESHCOP_EXT__BEGIN + 7,
3970*cfb92d14SAndroid Build Coastguard Worker 
3971*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MESHCOP_EXT__END = 0x1900,
3972*cfb92d14SAndroid Build Coastguard Worker 
3973*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_OPENTHREAD__BEGIN = 0x1900,
3974*cfb92d14SAndroid Build Coastguard Worker 
3975*cfb92d14SAndroid Build Coastguard Worker     /// Channel Manager - Channel Change New Channel
3976*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C` (read-write)
3977*cfb92d14SAndroid Build Coastguard Worker      *
3978*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MANAGER
3979*cfb92d14SAndroid Build Coastguard Worker      *
3980*cfb92d14SAndroid Build Coastguard Worker      * Setting this property triggers the Channel Manager to start
3981*cfb92d14SAndroid Build Coastguard Worker      * a channel change process. The network switches to the given
3982*cfb92d14SAndroid Build Coastguard Worker      * channel after the specified delay (see `CHANNEL_MANAGER_DELAY`).
3983*cfb92d14SAndroid Build Coastguard Worker      *
3984*cfb92d14SAndroid Build Coastguard Worker      * A subsequent write to this property will cancel an ongoing
3985*cfb92d14SAndroid Build Coastguard Worker      * (previously requested) channel change.
3986*cfb92d14SAndroid Build Coastguard Worker      *
3987*cfb92d14SAndroid Build Coastguard Worker      */
3988*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MANAGER_NEW_CHANNEL = SPINEL_PROP_OPENTHREAD__BEGIN + 0,
3989*cfb92d14SAndroid Build Coastguard Worker 
3990*cfb92d14SAndroid Build Coastguard Worker     /// Channel Manager - Channel Change Delay
3991*cfb92d14SAndroid Build Coastguard Worker     /** Format 'S'
3992*cfb92d14SAndroid Build Coastguard Worker      *  Units: seconds
3993*cfb92d14SAndroid Build Coastguard Worker      *
3994*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MANAGER
3995*cfb92d14SAndroid Build Coastguard Worker      *
3996*cfb92d14SAndroid Build Coastguard Worker      * This property specifies the delay (in seconds) to be used for
3997*cfb92d14SAndroid Build Coastguard Worker      * a channel change request.
3998*cfb92d14SAndroid Build Coastguard Worker      *
3999*cfb92d14SAndroid Build Coastguard Worker      * The delay should preferably be longer than maximum data poll
4000*cfb92d14SAndroid Build Coastguard Worker      * interval used by all sleepy-end-devices within the Thread
4001*cfb92d14SAndroid Build Coastguard Worker      * network.
4002*cfb92d14SAndroid Build Coastguard Worker      *
4003*cfb92d14SAndroid Build Coastguard Worker      */
4004*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MANAGER_DELAY = SPINEL_PROP_OPENTHREAD__BEGIN + 1,
4005*cfb92d14SAndroid Build Coastguard Worker 
4006*cfb92d14SAndroid Build Coastguard Worker     /// Channel Manager Supported Channels
4007*cfb92d14SAndroid Build Coastguard Worker     /** Format 'A(C)'
4008*cfb92d14SAndroid Build Coastguard Worker      *
4009*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MANAGER
4010*cfb92d14SAndroid Build Coastguard Worker      *
4011*cfb92d14SAndroid Build Coastguard Worker      * This property specifies the list of supported channels.
4012*cfb92d14SAndroid Build Coastguard Worker      *
4013*cfb92d14SAndroid Build Coastguard Worker      */
4014*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MANAGER_SUPPORTED_CHANNELS = SPINEL_PROP_OPENTHREAD__BEGIN + 2,
4015*cfb92d14SAndroid Build Coastguard Worker 
4016*cfb92d14SAndroid Build Coastguard Worker     /// Channel Manager Favored Channels
4017*cfb92d14SAndroid Build Coastguard Worker     /** Format 'A(C)'
4018*cfb92d14SAndroid Build Coastguard Worker      *
4019*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MANAGER
4020*cfb92d14SAndroid Build Coastguard Worker      *
4021*cfb92d14SAndroid Build Coastguard Worker      * This property specifies the list of favored channels (when `ChannelManager` is asked to select channel)
4022*cfb92d14SAndroid Build Coastguard Worker      *
4023*cfb92d14SAndroid Build Coastguard Worker      */
4024*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MANAGER_FAVORED_CHANNELS = SPINEL_PROP_OPENTHREAD__BEGIN + 3,
4025*cfb92d14SAndroid Build Coastguard Worker 
4026*cfb92d14SAndroid Build Coastguard Worker     /// Channel Manager Channel Select Trigger
4027*cfb92d14SAndroid Build Coastguard Worker     /** Format 'b'
4028*cfb92d14SAndroid Build Coastguard Worker      *
4029*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MANAGER
4030*cfb92d14SAndroid Build Coastguard Worker      *
4031*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property triggers a request on `ChannelManager` to select a new channel.
4032*cfb92d14SAndroid Build Coastguard Worker      *
4033*cfb92d14SAndroid Build Coastguard Worker      * Once a Channel Select is triggered, the Channel Manager will perform the following 3 steps:
4034*cfb92d14SAndroid Build Coastguard Worker      *
4035*cfb92d14SAndroid Build Coastguard Worker      * 1) `ChannelManager` decides if the channel change would be helpful. This check can be skipped if in the input
4036*cfb92d14SAndroid Build Coastguard Worker      *    boolean to this property is set to `true` (skipping the quality check).
4037*cfb92d14SAndroid Build Coastguard Worker      *    This step uses the collected link quality metrics on the device such as CCA failure rate, frame and message
4038*cfb92d14SAndroid Build Coastguard Worker      *    error rates per neighbor, etc. to determine if the current channel quality is at the level that justifies
4039*cfb92d14SAndroid Build Coastguard Worker      *    a channel change.
4040*cfb92d14SAndroid Build Coastguard Worker      *
4041*cfb92d14SAndroid Build Coastguard Worker      * 2) If first step passes, then `ChannelManager` selects a potentially better channel. It uses the collected
4042*cfb92d14SAndroid Build Coastguard Worker      *    channel quality data by `ChannelMonitor` module. The supported and favored channels are used at this step.
4043*cfb92d14SAndroid Build Coastguard Worker      *
4044*cfb92d14SAndroid Build Coastguard Worker      * 3) If the newly selected channel is different from the current channel, `ChannelManager` requests/starts the
4045*cfb92d14SAndroid Build Coastguard Worker      *    channel change process.
4046*cfb92d14SAndroid Build Coastguard Worker      *
4047*cfb92d14SAndroid Build Coastguard Worker      * Reading this property always yields `false`.
4048*cfb92d14SAndroid Build Coastguard Worker      *
4049*cfb92d14SAndroid Build Coastguard Worker      */
4050*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MANAGER_CHANNEL_SELECT = SPINEL_PROP_OPENTHREAD__BEGIN + 4,
4051*cfb92d14SAndroid Build Coastguard Worker 
4052*cfb92d14SAndroid Build Coastguard Worker     /// Channel Manager Auto Channel Selection Enabled
4053*cfb92d14SAndroid Build Coastguard Worker     /** Format 'b'
4054*cfb92d14SAndroid Build Coastguard Worker      *
4055*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MANAGER
4056*cfb92d14SAndroid Build Coastguard Worker      *
4057*cfb92d14SAndroid Build Coastguard Worker      * This property indicates if auto-channel-selection functionality is enabled/disabled on `ChannelManager`.
4058*cfb92d14SAndroid Build Coastguard Worker      *
4059*cfb92d14SAndroid Build Coastguard Worker      * When enabled, `ChannelManager` will periodically checks and attempts to select a new channel. The period interval
4060*cfb92d14SAndroid Build Coastguard Worker      * is specified by `SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_INTERVAL`.
4061*cfb92d14SAndroid Build Coastguard Worker      *
4062*cfb92d14SAndroid Build Coastguard Worker      */
4063*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_ENABLED = SPINEL_PROP_OPENTHREAD__BEGIN + 5,
4064*cfb92d14SAndroid Build Coastguard Worker 
4065*cfb92d14SAndroid Build Coastguard Worker     /// Channel Manager Auto Channel Selection Interval
4066*cfb92d14SAndroid Build Coastguard Worker     /** Format 'L'
4067*cfb92d14SAndroid Build Coastguard Worker      *  units: seconds
4068*cfb92d14SAndroid Build Coastguard Worker      *
4069*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_CHANNEL_MANAGER
4070*cfb92d14SAndroid Build Coastguard Worker      *
4071*cfb92d14SAndroid Build Coastguard Worker      * This property specifies the auto-channel-selection check interval (in seconds).
4072*cfb92d14SAndroid Build Coastguard Worker      *
4073*cfb92d14SAndroid Build Coastguard Worker      */
4074*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_INTERVAL = SPINEL_PROP_OPENTHREAD__BEGIN + 6,
4075*cfb92d14SAndroid Build Coastguard Worker 
4076*cfb92d14SAndroid Build Coastguard Worker     /// Thread network time.
4077*cfb92d14SAndroid Build Coastguard Worker     /** Format: `Xc` - Read only
4078*cfb92d14SAndroid Build Coastguard Worker      *
4079*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
4080*cfb92d14SAndroid Build Coastguard Worker      *
4081*cfb92d14SAndroid Build Coastguard Worker      *  `X`: The Thread network time, in microseconds.
4082*cfb92d14SAndroid Build Coastguard Worker      *  `c`: Time synchronization status.
4083*cfb92d14SAndroid Build Coastguard Worker      *
4084*cfb92d14SAndroid Build Coastguard Worker      */
4085*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_THREAD_NETWORK_TIME = SPINEL_PROP_OPENTHREAD__BEGIN + 7,
4086*cfb92d14SAndroid Build Coastguard Worker 
4087*cfb92d14SAndroid Build Coastguard Worker     /// Thread time synchronization period
4088*cfb92d14SAndroid Build Coastguard Worker     /** Format: `S` - Read-Write
4089*cfb92d14SAndroid Build Coastguard Worker      *
4090*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
4091*cfb92d14SAndroid Build Coastguard Worker      *
4092*cfb92d14SAndroid Build Coastguard Worker      *  `S`: Time synchronization period, in seconds.
4093*cfb92d14SAndroid Build Coastguard Worker      *
4094*cfb92d14SAndroid Build Coastguard Worker      */
4095*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_TIME_SYNC_PERIOD = SPINEL_PROP_OPENTHREAD__BEGIN + 8,
4096*cfb92d14SAndroid Build Coastguard Worker 
4097*cfb92d14SAndroid Build Coastguard Worker     /// Thread Time synchronization XTAL accuracy threshold for Router
4098*cfb92d14SAndroid Build Coastguard Worker     /** Format: `S` - Read-Write
4099*cfb92d14SAndroid Build Coastguard Worker      *
4100*cfb92d14SAndroid Build Coastguard Worker      * Data per item is:
4101*cfb92d14SAndroid Build Coastguard Worker      *
4102*cfb92d14SAndroid Build Coastguard Worker      *  `S`: The XTAL accuracy threshold for Router, in PPM.
4103*cfb92d14SAndroid Build Coastguard Worker      *
4104*cfb92d14SAndroid Build Coastguard Worker      */
4105*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_TIME_SYNC_XTAL_THRESHOLD = SPINEL_PROP_OPENTHREAD__BEGIN + 9,
4106*cfb92d14SAndroid Build Coastguard Worker 
4107*cfb92d14SAndroid Build Coastguard Worker     /// Child Supervision Interval
4108*cfb92d14SAndroid Build Coastguard Worker     /** Format: `S` - Read-Write
4109*cfb92d14SAndroid Build Coastguard Worker      *  Units: Seconds
4110*cfb92d14SAndroid Build Coastguard Worker      *
4111*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_CHILD_SUPERVISION`
4112*cfb92d14SAndroid Build Coastguard Worker      *
4113*cfb92d14SAndroid Build Coastguard Worker      * The child supervision interval (in seconds). Zero indicates that child supervision is disabled.
4114*cfb92d14SAndroid Build Coastguard Worker      *
4115*cfb92d14SAndroid Build Coastguard Worker      * When enabled, Child supervision feature ensures that at least one message is sent to every sleepy child within
4116*cfb92d14SAndroid Build Coastguard Worker      * the given supervision interval. If there is no other message, a supervision message (a data message with empty
4117*cfb92d14SAndroid Build Coastguard Worker      * payload) is enqueued and sent to the child.
4118*cfb92d14SAndroid Build Coastguard Worker      *
4119*cfb92d14SAndroid Build Coastguard Worker      * This property is available for FTD build only.
4120*cfb92d14SAndroid Build Coastguard Worker      *
4121*cfb92d14SAndroid Build Coastguard Worker      */
4122*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHILD_SUPERVISION_INTERVAL = SPINEL_PROP_OPENTHREAD__BEGIN + 10,
4123*cfb92d14SAndroid Build Coastguard Worker 
4124*cfb92d14SAndroid Build Coastguard Worker     /// Child Supervision Check Timeout
4125*cfb92d14SAndroid Build Coastguard Worker     /** Format: `S` - Read-Write
4126*cfb92d14SAndroid Build Coastguard Worker      *  Units: Seconds
4127*cfb92d14SAndroid Build Coastguard Worker      *
4128*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_CHILD_SUPERVISION`
4129*cfb92d14SAndroid Build Coastguard Worker      *
4130*cfb92d14SAndroid Build Coastguard Worker      * The child supervision check timeout interval (in seconds). Zero indicates supervision check on the child is
4131*cfb92d14SAndroid Build Coastguard Worker      * disabled.
4132*cfb92d14SAndroid Build Coastguard Worker      *
4133*cfb92d14SAndroid Build Coastguard Worker      * Supervision check is only applicable on a sleepy child. When enabled, if the child does not hear from its parent
4134*cfb92d14SAndroid Build Coastguard Worker      * within the specified check timeout, it initiates a re-attach process by starting an MLE Child Update
4135*cfb92d14SAndroid Build Coastguard Worker      * Request/Response exchange with the parent.
4136*cfb92d14SAndroid Build Coastguard Worker      *
4137*cfb92d14SAndroid Build Coastguard Worker      * This property is available for FTD and MTD builds.
4138*cfb92d14SAndroid Build Coastguard Worker      *
4139*cfb92d14SAndroid Build Coastguard Worker      */
4140*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CHILD_SUPERVISION_CHECK_TIMEOUT = SPINEL_PROP_OPENTHREAD__BEGIN + 11,
4141*cfb92d14SAndroid Build Coastguard Worker 
4142*cfb92d14SAndroid Build Coastguard Worker     // RCP (NCP in radio only mode) version
4143*cfb92d14SAndroid Build Coastguard Worker     /** Format `U` - Read only
4144*cfb92d14SAndroid Build Coastguard Worker      *
4145*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_POSIX
4146*cfb92d14SAndroid Build Coastguard Worker      *
4147*cfb92d14SAndroid Build Coastguard Worker      * This property gives the version string of RCP (NCP in radio mode) which is being controlled by a POSIX
4148*cfb92d14SAndroid Build Coastguard Worker      * application. It is available only in "POSIX" platform (i.e., `OPENTHREAD_PLATFORM_POSIX` is enabled).
4149*cfb92d14SAndroid Build Coastguard Worker      *
4150*cfb92d14SAndroid Build Coastguard Worker      */
4151*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_VERSION = SPINEL_PROP_OPENTHREAD__BEGIN + 12,
4152*cfb92d14SAndroid Build Coastguard Worker 
4153*cfb92d14SAndroid Build Coastguard Worker     /// Thread Parent Response info
4154*cfb92d14SAndroid Build Coastguard Worker     /** Format: `ESccCCCb` - Asynchronous event only
4155*cfb92d14SAndroid Build Coastguard Worker      *
4156*cfb92d14SAndroid Build Coastguard Worker      *  `E`: Extended address
4157*cfb92d14SAndroid Build Coastguard Worker      *  `S`: RLOC16
4158*cfb92d14SAndroid Build Coastguard Worker      *  `c`: Instant RSSI
4159*cfb92d14SAndroid Build Coastguard Worker      *  'c': Parent Priority
4160*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Link Quality3
4161*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Link Quality2
4162*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Link Quality1
4163*cfb92d14SAndroid Build Coastguard Worker      *  'b': Is the node receiving parent response frame attached
4164*cfb92d14SAndroid Build Coastguard Worker      *
4165*cfb92d14SAndroid Build Coastguard Worker      * This property sends Parent Response frame information to the Host.
4166*cfb92d14SAndroid Build Coastguard Worker      * This property is available for FTD build only.
4167*cfb92d14SAndroid Build Coastguard Worker      *
4168*cfb92d14SAndroid Build Coastguard Worker      */
4169*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_PARENT_RESPONSE_INFO = SPINEL_PROP_OPENTHREAD__BEGIN + 13,
4170*cfb92d14SAndroid Build Coastguard Worker 
4171*cfb92d14SAndroid Build Coastguard Worker     /// SLAAC enabled
4172*cfb92d14SAndroid Build Coastguard Worker     /** Format `b` - Read-Write
4173*cfb92d14SAndroid Build Coastguard Worker      *  Required capability: `SPINEL_CAP_SLAAC`
4174*cfb92d14SAndroid Build Coastguard Worker      *
4175*cfb92d14SAndroid Build Coastguard Worker      * This property allows the host to enable/disable SLAAC module on NCP at run-time. When SLAAC module is enabled,
4176*cfb92d14SAndroid Build Coastguard Worker      * SLAAC addresses (based on on-mesh prefixes in Network Data) are added to the interface. When SLAAC module is
4177*cfb92d14SAndroid Build Coastguard Worker      * disabled any previously added SLAAC address is removed.
4178*cfb92d14SAndroid Build Coastguard Worker      *
4179*cfb92d14SAndroid Build Coastguard Worker      */
4180*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SLAAC_ENABLED = SPINEL_PROP_OPENTHREAD__BEGIN + 14,
4181*cfb92d14SAndroid Build Coastguard Worker 
4182*cfb92d14SAndroid Build Coastguard Worker     // Supported Radio Links (by device)
4183*cfb92d14SAndroid Build Coastguard Worker     /**
4184*cfb92d14SAndroid Build Coastguard Worker      * Format `A(i)` - Read only
4185*cfb92d14SAndroid Build Coastguard Worker      *
4186*cfb92d14SAndroid Build Coastguard Worker      * This property returns list of supported radio links by the device itself. Enumeration `SPINEL_RADIO_LINK_{TYPE}`
4187*cfb92d14SAndroid Build Coastguard Worker      * values indicate different radio link types.
4188*cfb92d14SAndroid Build Coastguard Worker      *
4189*cfb92d14SAndroid Build Coastguard Worker      */
4190*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SUPPORTED_RADIO_LINKS = SPINEL_PROP_OPENTHREAD__BEGIN + 15,
4191*cfb92d14SAndroid Build Coastguard Worker 
4192*cfb92d14SAndroid Build Coastguard Worker     /// Neighbor Table Multi Radio Link Info
4193*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(ESA(t(iC))))` - Read only
4194*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_MULTI_RADIO`.
4195*cfb92d14SAndroid Build Coastguard Worker      *
4196*cfb92d14SAndroid Build Coastguard Worker      * Each item represents info about a neighbor:
4197*cfb92d14SAndroid Build Coastguard Worker      *
4198*cfb92d14SAndroid Build Coastguard Worker      *  `E`: Neighbor's Extended Address
4199*cfb92d14SAndroid Build Coastguard Worker      *  `S`: Neighbor's RLOC16
4200*cfb92d14SAndroid Build Coastguard Worker      *
4201*cfb92d14SAndroid Build Coastguard Worker      *  This is then followed by an array of radio link info structures indicating which radio links are supported by
4202*cfb92d14SAndroid Build Coastguard Worker      *  the neighbor:
4203*cfb92d14SAndroid Build Coastguard Worker      *
4204*cfb92d14SAndroid Build Coastguard Worker      *    `i` : Radio link type (enumeration `SPINEL_RADIO_LINK_{TYPE}`).
4205*cfb92d14SAndroid Build Coastguard Worker      *    `C` : Preference value associated with radio link.
4206*cfb92d14SAndroid Build Coastguard Worker      *
4207*cfb92d14SAndroid Build Coastguard Worker      */
4208*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NEIGHBOR_TABLE_MULTI_RADIO_INFO = SPINEL_PROP_OPENTHREAD__BEGIN + 16,
4209*cfb92d14SAndroid Build Coastguard Worker 
4210*cfb92d14SAndroid Build Coastguard Worker     /// SRP Client Start
4211*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b(6Sb)` - Write only
4212*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_SRP_CLIENT`.
4213*cfb92d14SAndroid Build Coastguard Worker      *
4214*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property allows user to start or stop the SRP client operation with a given SRP server.
4215*cfb92d14SAndroid Build Coastguard Worker      *
4216*cfb92d14SAndroid Build Coastguard Worker      * Written value format is:
4217*cfb92d14SAndroid Build Coastguard Worker      *
4218*cfb92d14SAndroid Build Coastguard Worker      *   `b` : TRUE to start the client, FALSE to stop the client.
4219*cfb92d14SAndroid Build Coastguard Worker      *
4220*cfb92d14SAndroid Build Coastguard Worker      * When used to start the SRP client, the following fields should also be included:
4221*cfb92d14SAndroid Build Coastguard Worker      *
4222*cfb92d14SAndroid Build Coastguard Worker      *   `6` : SRP server IPv6 address.
4223*cfb92d14SAndroid Build Coastguard Worker      *   `U` : SRP server port number.
4224*cfb92d14SAndroid Build Coastguard Worker      *   `b` : Boolean to indicate whether or not to emit SRP client events (using `SPINEL_PROP_SRP_CLIENT_EVENT`).
4225*cfb92d14SAndroid Build Coastguard Worker      *
4226*cfb92d14SAndroid Build Coastguard Worker      */
4227*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SRP_CLIENT_START = SPINEL_PROP_OPENTHREAD__BEGIN + 17,
4228*cfb92d14SAndroid Build Coastguard Worker 
4229*cfb92d14SAndroid Build Coastguard Worker     /// SRP Client Lease Interval
4230*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` - Read/Write
4231*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_SRP_CLIENT`.
4232*cfb92d14SAndroid Build Coastguard Worker      *
4233*cfb92d14SAndroid Build Coastguard Worker      * The lease interval used in SRP update requests (in seconds).
4234*cfb92d14SAndroid Build Coastguard Worker      *
4235*cfb92d14SAndroid Build Coastguard Worker      */
4236*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SRP_CLIENT_LEASE_INTERVAL = SPINEL_PROP_OPENTHREAD__BEGIN + 18,
4237*cfb92d14SAndroid Build Coastguard Worker 
4238*cfb92d14SAndroid Build Coastguard Worker     /// SRP Client Key Lease Interval
4239*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` - Read/Write
4240*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_SRP_CLIENT`.
4241*cfb92d14SAndroid Build Coastguard Worker      *
4242*cfb92d14SAndroid Build Coastguard Worker      * The key lease interval used in SRP update requests (in seconds).
4243*cfb92d14SAndroid Build Coastguard Worker      *
4244*cfb92d14SAndroid Build Coastguard Worker      */
4245*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SRP_CLIENT_KEY_LEASE_INTERVAL = SPINEL_PROP_OPENTHREAD__BEGIN + 19,
4246*cfb92d14SAndroid Build Coastguard Worker 
4247*cfb92d14SAndroid Build Coastguard Worker     /// SRP Client Host Info
4248*cfb92d14SAndroid Build Coastguard Worker     /** Format: `UCt(A(6))` - Read only
4249*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_SRP_CLIENT`.
4250*cfb92d14SAndroid Build Coastguard Worker      *
4251*cfb92d14SAndroid Build Coastguard Worker      * Format is:
4252*cfb92d14SAndroid Build Coastguard Worker      *
4253*cfb92d14SAndroid Build Coastguard Worker      *   `U`       : The host name.
4254*cfb92d14SAndroid Build Coastguard Worker      *   `C`       : The host state (values from `spinel_srp_client_item_state_t`).
4255*cfb92d14SAndroid Build Coastguard Worker      *   `t(A(6))` : Structure containing array of host IPv6 addresses.
4256*cfb92d14SAndroid Build Coastguard Worker      *
4257*cfb92d14SAndroid Build Coastguard Worker      */
4258*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SRP_CLIENT_HOST_INFO = SPINEL_PROP_OPENTHREAD__BEGIN + 20,
4259*cfb92d14SAndroid Build Coastguard Worker 
4260*cfb92d14SAndroid Build Coastguard Worker     /// SRP Client Host Name (label).
4261*cfb92d14SAndroid Build Coastguard Worker     /** Format: `U` - Read/Write
4262*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_SRP_CLIENT`.
4263*cfb92d14SAndroid Build Coastguard Worker      *
4264*cfb92d14SAndroid Build Coastguard Worker      */
4265*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SRP_CLIENT_HOST_NAME = SPINEL_PROP_OPENTHREAD__BEGIN + 21,
4266*cfb92d14SAndroid Build Coastguard Worker 
4267*cfb92d14SAndroid Build Coastguard Worker     /// SRP Client Host Addresses
4268*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(6)` - Read/Write
4269*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_SRP_CLIENT`.
4270*cfb92d14SAndroid Build Coastguard Worker      *
4271*cfb92d14SAndroid Build Coastguard Worker      */
4272*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SRP_CLIENT_HOST_ADDRESSES = SPINEL_PROP_OPENTHREAD__BEGIN + 22,
4273*cfb92d14SAndroid Build Coastguard Worker 
4274*cfb92d14SAndroid Build Coastguard Worker     /// SRP Client Services
4275*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(UUSSSd))` - Read/Insert/Remove
4276*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_SRP_CLIENT`.
4277*cfb92d14SAndroid Build Coastguard Worker      *
4278*cfb92d14SAndroid Build Coastguard Worker      * This property provides a list/array of services.
4279*cfb92d14SAndroid Build Coastguard Worker      *
4280*cfb92d14SAndroid Build Coastguard Worker      * Data per item for `SPINEL_CMD_PROP_VALUE_GET` and/or `SPINEL_CMD_PROP_VALUE_INSERT` operation is as follows:
4281*cfb92d14SAndroid Build Coastguard Worker      *
4282*cfb92d14SAndroid Build Coastguard Worker      *   `U` : The service name labels (e.g., "_chip._udp", not the full domain name.
4283*cfb92d14SAndroid Build Coastguard Worker      *   `U` : The service instance name label (not the full name).
4284*cfb92d14SAndroid Build Coastguard Worker      *   `S` : The service port number.
4285*cfb92d14SAndroid Build Coastguard Worker      *   `S` : The service priority.
4286*cfb92d14SAndroid Build Coastguard Worker      *   `S` : The service weight.
4287*cfb92d14SAndroid Build Coastguard Worker      *
4288*cfb92d14SAndroid Build Coastguard Worker      * For `SPINEL_CMD_PROP_VALUE_REMOVE` command, the following format is used:
4289*cfb92d14SAndroid Build Coastguard Worker      *
4290*cfb92d14SAndroid Build Coastguard Worker      *   `U` : The service name labels (e.g., "_chip._udp", not the full domain name.
4291*cfb92d14SAndroid Build Coastguard Worker      *   `U` : The service instance name label (not the full name).
4292*cfb92d14SAndroid Build Coastguard Worker      *   `b` : Indicates whether to clear the service entry (optional).
4293*cfb92d14SAndroid Build Coastguard Worker      *
4294*cfb92d14SAndroid Build Coastguard Worker      * The last boolean (`b`) field is optional. When included it indicates on `true` to clear the service (clear it
4295*cfb92d14SAndroid Build Coastguard Worker      * on client immediately with no interaction to server) and on `false` to remove the service (inform server and
4296*cfb92d14SAndroid Build Coastguard Worker      * wait for the service entry to be removed on server). If it is not included, the value is `false`.
4297*cfb92d14SAndroid Build Coastguard Worker      *
4298*cfb92d14SAndroid Build Coastguard Worker      */
4299*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SRP_CLIENT_SERVICES = SPINEL_PROP_OPENTHREAD__BEGIN + 23,
4300*cfb92d14SAndroid Build Coastguard Worker 
4301*cfb92d14SAndroid Build Coastguard Worker     /// SRP Client Host And Services Remove
4302*cfb92d14SAndroid Build Coastguard Worker     /** Format: `bb` : Write only
4303*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_SRP_CLIENT`.
4304*cfb92d14SAndroid Build Coastguard Worker      *
4305*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property with starts the remove process of the host info and all services.
4306*cfb92d14SAndroid Build Coastguard Worker      * Please see `otSrpClientRemoveHostAndServices()` for more details.
4307*cfb92d14SAndroid Build Coastguard Worker      *
4308*cfb92d14SAndroid Build Coastguard Worker      * Format is:
4309*cfb92d14SAndroid Build Coastguard Worker      *
4310*cfb92d14SAndroid Build Coastguard Worker      *    `b` : A boolean indicating whether or not the host key lease should also be cleared.
4311*cfb92d14SAndroid Build Coastguard Worker      *    `b` : A boolean indicating whether or not to send update to server when host info is not registered.
4312*cfb92d14SAndroid Build Coastguard Worker      *
4313*cfb92d14SAndroid Build Coastguard Worker      */
4314*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SRP_CLIENT_HOST_SERVICES_REMOVE = SPINEL_PROP_OPENTHREAD__BEGIN + 24,
4315*cfb92d14SAndroid Build Coastguard Worker 
4316*cfb92d14SAndroid Build Coastguard Worker     /// SRP Client Host And Services Clear
4317*cfb92d14SAndroid Build Coastguard Worker     /** Format: Empty : Write only
4318*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_SRP_CLIENT`.
4319*cfb92d14SAndroid Build Coastguard Worker      *
4320*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property clears all host info and all the services.
4321*cfb92d14SAndroid Build Coastguard Worker      * Please see `otSrpClientClearHostAndServices()` for more details.
4322*cfb92d14SAndroid Build Coastguard Worker      *
4323*cfb92d14SAndroid Build Coastguard Worker      */
4324*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SRP_CLIENT_HOST_SERVICES_CLEAR = SPINEL_PROP_OPENTHREAD__BEGIN + 25,
4325*cfb92d14SAndroid Build Coastguard Worker 
4326*cfb92d14SAndroid Build Coastguard Worker     /// SRP Client Event
4327*cfb92d14SAndroid Build Coastguard Worker     /** Format: t() : Asynchronous event only
4328*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_SRP_CLIENT`.
4329*cfb92d14SAndroid Build Coastguard Worker      *
4330*cfb92d14SAndroid Build Coastguard Worker      * This property is asynchronously emitted when there is an event from SRP client notifying some state changes or
4331*cfb92d14SAndroid Build Coastguard Worker      * errors.
4332*cfb92d14SAndroid Build Coastguard Worker      *
4333*cfb92d14SAndroid Build Coastguard Worker      * The general format of this property is as follows:
4334*cfb92d14SAndroid Build Coastguard Worker      *
4335*cfb92d14SAndroid Build Coastguard Worker      *    `S` : Error code (see `spinel_srp_client_error_t` enumeration).
4336*cfb92d14SAndroid Build Coastguard Worker      *    `d` : Host info data.
4337*cfb92d14SAndroid Build Coastguard Worker      *    `d` : Active services.
4338*cfb92d14SAndroid Build Coastguard Worker      *    `d` : Removed services.
4339*cfb92d14SAndroid Build Coastguard Worker      *
4340*cfb92d14SAndroid Build Coastguard Worker      * The host info data contains:
4341*cfb92d14SAndroid Build Coastguard Worker      *
4342*cfb92d14SAndroid Build Coastguard Worker      *   `U`       : The host name.
4343*cfb92d14SAndroid Build Coastguard Worker      *   `C`       : The host state (values from `spinel_srp_client_item_state_t`).
4344*cfb92d14SAndroid Build Coastguard Worker      *   `t(A(6))` : Structure containing array of host IPv6 addresses.
4345*cfb92d14SAndroid Build Coastguard Worker      *
4346*cfb92d14SAndroid Build Coastguard Worker      * The active or removed services data is an array of services `A(t(UUSSSd))` with each service format:
4347*cfb92d14SAndroid Build Coastguard Worker      *
4348*cfb92d14SAndroid Build Coastguard Worker      *   `U` : The service name labels (e.g., "_chip._udp", not the full domain name.
4349*cfb92d14SAndroid Build Coastguard Worker      *   `U` : The service instance name label (not the full name).
4350*cfb92d14SAndroid Build Coastguard Worker      *   `S` : The service port number.
4351*cfb92d14SAndroid Build Coastguard Worker      *   `S` : The service priority.
4352*cfb92d14SAndroid Build Coastguard Worker      *   `S` : The service weight.
4353*cfb92d14SAndroid Build Coastguard Worker      *   `d` : The encoded TXT-DATA.
4354*cfb92d14SAndroid Build Coastguard Worker      *
4355*cfb92d14SAndroid Build Coastguard Worker      */
4356*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SRP_CLIENT_EVENT = SPINEL_PROP_OPENTHREAD__BEGIN + 26,
4357*cfb92d14SAndroid Build Coastguard Worker 
4358*cfb92d14SAndroid Build Coastguard Worker     /// SRP Client Service Key Inclusion Enabled
4359*cfb92d14SAndroid Build Coastguard Worker     /** Format `b` : Read-Write
4360*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_SRP_CLIENT` & `SPINEL_CAP_REFERENCE_DEVICE`.
4361*cfb92d14SAndroid Build Coastguard Worker      *
4362*cfb92d14SAndroid Build Coastguard Worker      * This boolean property indicates whether the "service key record inclusion" mode is enabled or not.
4363*cfb92d14SAndroid Build Coastguard Worker      *
4364*cfb92d14SAndroid Build Coastguard Worker      * When enabled, SRP client will include KEY record in Service Description Instructions in the SRP update messages
4365*cfb92d14SAndroid Build Coastguard Worker      * that it sends.
4366*cfb92d14SAndroid Build Coastguard Worker      *
4367*cfb92d14SAndroid Build Coastguard Worker      * KEY record is optional in Service Description Instruction (it is required and always included in the Host
4368*cfb92d14SAndroid Build Coastguard Worker      * Description Instruction). The default behavior of SRP client is to not include it. This function is intended to
4369*cfb92d14SAndroid Build Coastguard Worker      * override the default behavior for testing only.
4370*cfb92d14SAndroid Build Coastguard Worker      *
4371*cfb92d14SAndroid Build Coastguard Worker      */
4372*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SRP_CLIENT_SERVICE_KEY_ENABLED = SPINEL_PROP_OPENTHREAD__BEGIN + 27,
4373*cfb92d14SAndroid Build Coastguard Worker 
4374*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_OPENTHREAD__END = 0x2000,
4375*cfb92d14SAndroid Build Coastguard Worker 
4376*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SERVER__BEGIN = 0xA0,
4377*cfb92d14SAndroid Build Coastguard Worker 
4378*cfb92d14SAndroid Build Coastguard Worker     /// Server Allow Local Network Data Change
4379*cfb92d14SAndroid Build Coastguard Worker     /** Format `b` - Read-write
4380*cfb92d14SAndroid Build Coastguard Worker      *
4381*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_SERVICE
4382*cfb92d14SAndroid Build Coastguard Worker      *
4383*cfb92d14SAndroid Build Coastguard Worker      * Set to true before changing local server net data. Set to false when finished.
4384*cfb92d14SAndroid Build Coastguard Worker      * This allows changes to be aggregated into a single event.
4385*cfb92d14SAndroid Build Coastguard Worker      *
4386*cfb92d14SAndroid Build Coastguard Worker      */
4387*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SERVER_ALLOW_LOCAL_DATA_CHANGE = SPINEL_PROP_SERVER__BEGIN + 0,
4388*cfb92d14SAndroid Build Coastguard Worker 
4389*cfb92d14SAndroid Build Coastguard Worker     // Server Services
4390*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(LdbdS))`
4391*cfb92d14SAndroid Build Coastguard Worker      *
4392*cfb92d14SAndroid Build Coastguard Worker      * This property provides all services registered on the device
4393*cfb92d14SAndroid Build Coastguard Worker      *
4394*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_THREAD_SERVICE
4395*cfb92d14SAndroid Build Coastguard Worker      *
4396*cfb92d14SAndroid Build Coastguard Worker      * Array of structures containing:
4397*cfb92d14SAndroid Build Coastguard Worker      *
4398*cfb92d14SAndroid Build Coastguard Worker      *  `L`: Enterprise Number
4399*cfb92d14SAndroid Build Coastguard Worker      *  `d`: Service Data
4400*cfb92d14SAndroid Build Coastguard Worker      *  `b`: Stable
4401*cfb92d14SAndroid Build Coastguard Worker      *  `d`: Server Data
4402*cfb92d14SAndroid Build Coastguard Worker      *  `S`: RLOC
4403*cfb92d14SAndroid Build Coastguard Worker      *
4404*cfb92d14SAndroid Build Coastguard Worker      */
4405*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SERVER_SERVICES = SPINEL_PROP_SERVER__BEGIN + 1,
4406*cfb92d14SAndroid Build Coastguard Worker 
4407*cfb92d14SAndroid Build Coastguard Worker     // Server Leader Services
4408*cfb92d14SAndroid Build Coastguard Worker     /** Format: `A(t(CLdbdS))`
4409*cfb92d14SAndroid Build Coastguard Worker      *
4410*cfb92d14SAndroid Build Coastguard Worker      * This property provides all services registered on the leader
4411*cfb92d14SAndroid Build Coastguard Worker      *
4412*cfb92d14SAndroid Build Coastguard Worker      * Array of structures containing:
4413*cfb92d14SAndroid Build Coastguard Worker      *
4414*cfb92d14SAndroid Build Coastguard Worker      *  `C`: Service ID
4415*cfb92d14SAndroid Build Coastguard Worker      *  `L`: Enterprise Number
4416*cfb92d14SAndroid Build Coastguard Worker      *  `d`: Service Data
4417*cfb92d14SAndroid Build Coastguard Worker      *  `b`: Stable
4418*cfb92d14SAndroid Build Coastguard Worker      *  `d`: Server Data
4419*cfb92d14SAndroid Build Coastguard Worker      *  `S`: RLOC
4420*cfb92d14SAndroid Build Coastguard Worker      *
4421*cfb92d14SAndroid Build Coastguard Worker      */
4422*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SERVER_LEADER_SERVICES = SPINEL_PROP_SERVER__BEGIN + 2,
4423*cfb92d14SAndroid Build Coastguard Worker 
4424*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_SERVER__END = 0xB0,
4425*cfb92d14SAndroid Build Coastguard Worker 
4426*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP__BEGIN = 0xB0,
4427*cfb92d14SAndroid Build Coastguard Worker 
4428*cfb92d14SAndroid Build Coastguard Worker     /// RCP API Version number
4429*cfb92d14SAndroid Build Coastguard Worker     /** Format: `i` (read-only)
4430*cfb92d14SAndroid Build Coastguard Worker      *
4431*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_RADIO and SPINEL_CAP_RCP_API_VERSION.
4432*cfb92d14SAndroid Build Coastguard Worker      *
4433*cfb92d14SAndroid Build Coastguard Worker      * This property gives the RCP API Version number.
4434*cfb92d14SAndroid Build Coastguard Worker      *
4435*cfb92d14SAndroid Build Coastguard Worker      * Please see "Spinel definition compatibility guideline" section.
4436*cfb92d14SAndroid Build Coastguard Worker      *
4437*cfb92d14SAndroid Build Coastguard Worker      */
4438*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_API_VERSION = SPINEL_PROP_RCP__BEGIN + 0,
4439*cfb92d14SAndroid Build Coastguard Worker 
4440*cfb92d14SAndroid Build Coastguard Worker     /// Min host RCP API Version number
4441*cfb92d14SAndroid Build Coastguard Worker     /** Format: `i` (read-only)
4442*cfb92d14SAndroid Build Coastguard Worker      *
4443*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_RADIO and SPINEL_CAP_RCP_MIN_HOST_API_VERSION.
4444*cfb92d14SAndroid Build Coastguard Worker      *
4445*cfb92d14SAndroid Build Coastguard Worker      * This property gives the minimum host RCP API Version number.
4446*cfb92d14SAndroid Build Coastguard Worker      *
4447*cfb92d14SAndroid Build Coastguard Worker      * Please see "Spinel definition compatibility guideline" section.
4448*cfb92d14SAndroid Build Coastguard Worker      *
4449*cfb92d14SAndroid Build Coastguard Worker      */
4450*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_MIN_HOST_API_VERSION = SPINEL_PROP_RCP__BEGIN + 1,
4451*cfb92d14SAndroid Build Coastguard Worker 
4452*cfb92d14SAndroid Build Coastguard Worker     /// Crash Dump
4453*cfb92d14SAndroid Build Coastguard Worker     /** Format: Empty : Write only
4454*cfb92d14SAndroid Build Coastguard Worker      *
4455*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_RADIO and SPINEL_CAP_RCP_LOG_CRASH_DUMP.
4456*cfb92d14SAndroid Build Coastguard Worker      *
4457*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property instructs the RCP to log a crash dump if available.
4458*cfb92d14SAndroid Build Coastguard Worker      *
4459*cfb92d14SAndroid Build Coastguard Worker      */
4460*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_LOG_CRASH_DUMP = SPINEL_PROP_RCP__BEGIN + 2,
4461*cfb92d14SAndroid Build Coastguard Worker 
4462*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP__END = 0xFF,
4463*cfb92d14SAndroid Build Coastguard Worker 
4464*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_INTERFACE__BEGIN = 0x100,
4465*cfb92d14SAndroid Build Coastguard Worker 
4466*cfb92d14SAndroid Build Coastguard Worker     /// UART Bitrate
4467*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L`
4468*cfb92d14SAndroid Build Coastguard Worker      *
4469*cfb92d14SAndroid Build Coastguard Worker      *  If the NCP is using a UART to communicate with the host,
4470*cfb92d14SAndroid Build Coastguard Worker      *  this property allows the host to change the bitrate
4471*cfb92d14SAndroid Build Coastguard Worker      *  of the serial connection. The value encoding is `L`,
4472*cfb92d14SAndroid Build Coastguard Worker      *  which is a little-endian 32-bit unsigned integer.
4473*cfb92d14SAndroid Build Coastguard Worker      *  The host should not assume that all possible numeric values
4474*cfb92d14SAndroid Build Coastguard Worker      *  are supported.
4475*cfb92d14SAndroid Build Coastguard Worker      *
4476*cfb92d14SAndroid Build Coastguard Worker      *  If implemented by the NCP, this property should be persistent
4477*cfb92d14SAndroid Build Coastguard Worker      *  across software resets and forgotten upon hardware resets.
4478*cfb92d14SAndroid Build Coastguard Worker      *
4479*cfb92d14SAndroid Build Coastguard Worker      *  This property is only implemented when a UART is being
4480*cfb92d14SAndroid Build Coastguard Worker      *  used for Spinel. This property is optional.
4481*cfb92d14SAndroid Build Coastguard Worker      *
4482*cfb92d14SAndroid Build Coastguard Worker      *  When changing the bitrate, all frames will be received
4483*cfb92d14SAndroid Build Coastguard Worker      *  at the previous bitrate until the response frame to this command
4484*cfb92d14SAndroid Build Coastguard Worker      *  is received. Once a successful response frame is received by
4485*cfb92d14SAndroid Build Coastguard Worker      *  the host, all further frames will be transmitted at the new
4486*cfb92d14SAndroid Build Coastguard Worker      *  bitrate.
4487*cfb92d14SAndroid Build Coastguard Worker      */
4488*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_UART_BITRATE = SPINEL_PROP_INTERFACE__BEGIN + 0,
4489*cfb92d14SAndroid Build Coastguard Worker 
4490*cfb92d14SAndroid Build Coastguard Worker     /// UART Software Flow Control
4491*cfb92d14SAndroid Build Coastguard Worker     /** Format: `b`
4492*cfb92d14SAndroid Build Coastguard Worker      *
4493*cfb92d14SAndroid Build Coastguard Worker      *  If the NCP is using a UART to communicate with the host,
4494*cfb92d14SAndroid Build Coastguard Worker      *  this property allows the host to determine if software flow
4495*cfb92d14SAndroid Build Coastguard Worker      *  control (XON/XOFF style) should be used and (optionally) to
4496*cfb92d14SAndroid Build Coastguard Worker      *  turn it on or off.
4497*cfb92d14SAndroid Build Coastguard Worker      *
4498*cfb92d14SAndroid Build Coastguard Worker      *  This property is only implemented when a UART is being
4499*cfb92d14SAndroid Build Coastguard Worker      *  used for Spinel. This property is optional.
4500*cfb92d14SAndroid Build Coastguard Worker      */
4501*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_UART_XON_XOFF = SPINEL_PROP_INTERFACE__BEGIN + 1,
4502*cfb92d14SAndroid Build Coastguard Worker 
4503*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_INTERFACE__END = 0x200,
4504*cfb92d14SAndroid Build Coastguard Worker 
4505*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_15_4_PIB__BEGIN = 0x400,
4506*cfb92d14SAndroid Build Coastguard Worker     // For direct access to the 802.15.4 PID.
4507*cfb92d14SAndroid Build Coastguard Worker     // Individual registers are fetched using
4508*cfb92d14SAndroid Build Coastguard Worker     // `SPINEL_PROP_15_4_PIB__BEGIN+[PIB_IDENTIFIER]`
4509*cfb92d14SAndroid Build Coastguard Worker     // Only supported if SPINEL_CAP_15_4_PIB is set.
4510*cfb92d14SAndroid Build Coastguard Worker     //
4511*cfb92d14SAndroid Build Coastguard Worker     // For brevity, the entire 802.15.4 PIB space is
4512*cfb92d14SAndroid Build Coastguard Worker     // not defined here, but a few choice attributes
4513*cfb92d14SAndroid Build Coastguard Worker     // are defined for illustration and convenience.
4514*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_15_4_PIB_PHY_CHANNELS_SUPPORTED = SPINEL_PROP_15_4_PIB__BEGIN + 0x01, ///< [A(L)]
4515*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_15_4_PIB_MAC_PROMISCUOUS_MODE   = SPINEL_PROP_15_4_PIB__BEGIN + 0x51, ///< [b]
4516*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_15_4_PIB_MAC_SECURITY_ENABLED   = SPINEL_PROP_15_4_PIB__BEGIN + 0x5d, ///< [b]
4517*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_15_4_PIB__END                   = 0x500,
4518*cfb92d14SAndroid Build Coastguard Worker 
4519*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR__BEGIN = 0x500,
4520*cfb92d14SAndroid Build Coastguard Worker 
4521*cfb92d14SAndroid Build Coastguard Worker     /// Counter reset
4522*cfb92d14SAndroid Build Coastguard Worker     /** Format: Empty (Write only).
4523*cfb92d14SAndroid Build Coastguard Worker      *
4524*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property (with any value) will reset all MAC, MLE, IP, and NCP counters to zero.
4525*cfb92d14SAndroid Build Coastguard Worker      *
4526*cfb92d14SAndroid Build Coastguard Worker      */
4527*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RESET = SPINEL_PROP_CNTR__BEGIN + 0,
4528*cfb92d14SAndroid Build Coastguard Worker 
4529*cfb92d14SAndroid Build Coastguard Worker     /// The total number of transmissions.
4530*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4531*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_TOTAL = SPINEL_PROP_CNTR__BEGIN + 1,
4532*cfb92d14SAndroid Build Coastguard Worker 
4533*cfb92d14SAndroid Build Coastguard Worker     /// The number of transmissions with ack request.
4534*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4535*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_ACK_REQ = SPINEL_PROP_CNTR__BEGIN + 2,
4536*cfb92d14SAndroid Build Coastguard Worker 
4537*cfb92d14SAndroid Build Coastguard Worker     /// The number of transmissions that were acked.
4538*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4539*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_ACKED = SPINEL_PROP_CNTR__BEGIN + 3,
4540*cfb92d14SAndroid Build Coastguard Worker 
4541*cfb92d14SAndroid Build Coastguard Worker     /// The number of transmissions without ack request.
4542*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4543*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_NO_ACK_REQ = SPINEL_PROP_CNTR__BEGIN + 4,
4544*cfb92d14SAndroid Build Coastguard Worker 
4545*cfb92d14SAndroid Build Coastguard Worker     /// The number of transmitted data.
4546*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4547*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_DATA = SPINEL_PROP_CNTR__BEGIN + 5,
4548*cfb92d14SAndroid Build Coastguard Worker 
4549*cfb92d14SAndroid Build Coastguard Worker     /// The number of transmitted data poll.
4550*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4551*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_DATA_POLL = SPINEL_PROP_CNTR__BEGIN + 6,
4552*cfb92d14SAndroid Build Coastguard Worker 
4553*cfb92d14SAndroid Build Coastguard Worker     /// The number of transmitted beacon.
4554*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4555*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_BEACON = SPINEL_PROP_CNTR__BEGIN + 7,
4556*cfb92d14SAndroid Build Coastguard Worker 
4557*cfb92d14SAndroid Build Coastguard Worker     /// The number of transmitted beacon request.
4558*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4559*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_BEACON_REQ = SPINEL_PROP_CNTR__BEGIN + 8,
4560*cfb92d14SAndroid Build Coastguard Worker 
4561*cfb92d14SAndroid Build Coastguard Worker     /// The number of transmitted other types of frames.
4562*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4563*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_OTHER = SPINEL_PROP_CNTR__BEGIN + 9,
4564*cfb92d14SAndroid Build Coastguard Worker 
4565*cfb92d14SAndroid Build Coastguard Worker     /// The number of retransmission times.
4566*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4567*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_RETRY = SPINEL_PROP_CNTR__BEGIN + 10,
4568*cfb92d14SAndroid Build Coastguard Worker 
4569*cfb92d14SAndroid Build Coastguard Worker     /// The number of CCA failure times.
4570*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4571*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_ERR_CCA = SPINEL_PROP_CNTR__BEGIN + 11,
4572*cfb92d14SAndroid Build Coastguard Worker 
4573*cfb92d14SAndroid Build Coastguard Worker     /// The number of unicast packets transmitted.
4574*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4575*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_UNICAST = SPINEL_PROP_CNTR__BEGIN + 12,
4576*cfb92d14SAndroid Build Coastguard Worker 
4577*cfb92d14SAndroid Build Coastguard Worker     /// The number of broadcast packets transmitted.
4578*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4579*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_PKT_BROADCAST = SPINEL_PROP_CNTR__BEGIN + 13,
4580*cfb92d14SAndroid Build Coastguard Worker 
4581*cfb92d14SAndroid Build Coastguard Worker     /// The number of frame transmission failures due to abort error.
4582*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4583*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_ERR_ABORT = SPINEL_PROP_CNTR__BEGIN + 14,
4584*cfb92d14SAndroid Build Coastguard Worker 
4585*cfb92d14SAndroid Build Coastguard Worker     /// The total number of received packets.
4586*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4587*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_PKT_TOTAL = SPINEL_PROP_CNTR__BEGIN + 100,
4588*cfb92d14SAndroid Build Coastguard Worker 
4589*cfb92d14SAndroid Build Coastguard Worker     /// The number of received data.
4590*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4591*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_PKT_DATA = SPINEL_PROP_CNTR__BEGIN + 101,
4592*cfb92d14SAndroid Build Coastguard Worker 
4593*cfb92d14SAndroid Build Coastguard Worker     /// The number of received data poll.
4594*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4595*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_PKT_DATA_POLL = SPINEL_PROP_CNTR__BEGIN + 102,
4596*cfb92d14SAndroid Build Coastguard Worker 
4597*cfb92d14SAndroid Build Coastguard Worker     /// The number of received beacon.
4598*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4599*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_PKT_BEACON = SPINEL_PROP_CNTR__BEGIN + 103,
4600*cfb92d14SAndroid Build Coastguard Worker 
4601*cfb92d14SAndroid Build Coastguard Worker     /// The number of received beacon request.
4602*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4603*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_PKT_BEACON_REQ = SPINEL_PROP_CNTR__BEGIN + 104,
4604*cfb92d14SAndroid Build Coastguard Worker 
4605*cfb92d14SAndroid Build Coastguard Worker     /// The number of received other types of frames.
4606*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4607*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_PKT_OTHER = SPINEL_PROP_CNTR__BEGIN + 105,
4608*cfb92d14SAndroid Build Coastguard Worker 
4609*cfb92d14SAndroid Build Coastguard Worker     /// The number of received packets filtered by allowlist.
4610*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4611*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_PKT_FILT_WL = SPINEL_PROP_CNTR__BEGIN + 106,
4612*cfb92d14SAndroid Build Coastguard Worker 
4613*cfb92d14SAndroid Build Coastguard Worker     /// The number of received packets filtered by destination check.
4614*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4615*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_PKT_FILT_DA = SPINEL_PROP_CNTR__BEGIN + 107,
4616*cfb92d14SAndroid Build Coastguard Worker 
4617*cfb92d14SAndroid Build Coastguard Worker     /// The number of received packets that are empty.
4618*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4619*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_ERR_EMPTY = SPINEL_PROP_CNTR__BEGIN + 108,
4620*cfb92d14SAndroid Build Coastguard Worker 
4621*cfb92d14SAndroid Build Coastguard Worker     /// The number of received packets from an unknown neighbor.
4622*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4623*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_ERR_UKWN_NBR = SPINEL_PROP_CNTR__BEGIN + 109,
4624*cfb92d14SAndroid Build Coastguard Worker 
4625*cfb92d14SAndroid Build Coastguard Worker     /// The number of received packets whose source address is invalid.
4626*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4627*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_ERR_NVLD_SADDR = SPINEL_PROP_CNTR__BEGIN + 110,
4628*cfb92d14SAndroid Build Coastguard Worker 
4629*cfb92d14SAndroid Build Coastguard Worker     /// The number of received packets with a security error.
4630*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4631*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_ERR_SECURITY = SPINEL_PROP_CNTR__BEGIN + 111,
4632*cfb92d14SAndroid Build Coastguard Worker 
4633*cfb92d14SAndroid Build Coastguard Worker     /// The number of received packets with a checksum error.
4634*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4635*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_ERR_BAD_FCS = SPINEL_PROP_CNTR__BEGIN + 112,
4636*cfb92d14SAndroid Build Coastguard Worker 
4637*cfb92d14SAndroid Build Coastguard Worker     /// The number of received packets with other errors.
4638*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4639*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_ERR_OTHER = SPINEL_PROP_CNTR__BEGIN + 113,
4640*cfb92d14SAndroid Build Coastguard Worker 
4641*cfb92d14SAndroid Build Coastguard Worker     /// The number of received duplicated.
4642*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4643*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_PKT_DUP = SPINEL_PROP_CNTR__BEGIN + 114,
4644*cfb92d14SAndroid Build Coastguard Worker 
4645*cfb92d14SAndroid Build Coastguard Worker     /// The number of unicast packets received.
4646*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4647*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_PKT_UNICAST = SPINEL_PROP_CNTR__BEGIN + 115,
4648*cfb92d14SAndroid Build Coastguard Worker 
4649*cfb92d14SAndroid Build Coastguard Worker     /// The number of broadcast packets received.
4650*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4651*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_PKT_BROADCAST = SPINEL_PROP_CNTR__BEGIN + 116,
4652*cfb92d14SAndroid Build Coastguard Worker 
4653*cfb92d14SAndroid Build Coastguard Worker     /// The total number of secure transmitted IP messages.
4654*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4655*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_IP_SEC_TOTAL = SPINEL_PROP_CNTR__BEGIN + 200,
4656*cfb92d14SAndroid Build Coastguard Worker 
4657*cfb92d14SAndroid Build Coastguard Worker     /// The total number of insecure transmitted IP messages.
4658*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4659*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_IP_INSEC_TOTAL = SPINEL_PROP_CNTR__BEGIN + 201,
4660*cfb92d14SAndroid Build Coastguard Worker 
4661*cfb92d14SAndroid Build Coastguard Worker     /// The number of dropped (not transmitted) IP messages.
4662*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4663*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_IP_DROPPED = SPINEL_PROP_CNTR__BEGIN + 202,
4664*cfb92d14SAndroid Build Coastguard Worker 
4665*cfb92d14SAndroid Build Coastguard Worker     /// The total number of secure received IP message.
4666*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4667*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_IP_SEC_TOTAL = SPINEL_PROP_CNTR__BEGIN + 203,
4668*cfb92d14SAndroid Build Coastguard Worker 
4669*cfb92d14SAndroid Build Coastguard Worker     /// The total number of insecure received IP message.
4670*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4671*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_IP_INSEC_TOTAL = SPINEL_PROP_CNTR__BEGIN + 204,
4672*cfb92d14SAndroid Build Coastguard Worker 
4673*cfb92d14SAndroid Build Coastguard Worker     /// The number of dropped received IP messages.
4674*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4675*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_IP_DROPPED = SPINEL_PROP_CNTR__BEGIN + 205,
4676*cfb92d14SAndroid Build Coastguard Worker 
4677*cfb92d14SAndroid Build Coastguard Worker     /// The number of transmitted spinel frames.
4678*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4679*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_TX_SPINEL_TOTAL = SPINEL_PROP_CNTR__BEGIN + 300,
4680*cfb92d14SAndroid Build Coastguard Worker 
4681*cfb92d14SAndroid Build Coastguard Worker     /// The number of received spinel frames.
4682*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4683*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_SPINEL_TOTAL = SPINEL_PROP_CNTR__BEGIN + 301,
4684*cfb92d14SAndroid Build Coastguard Worker 
4685*cfb92d14SAndroid Build Coastguard Worker     /// The number of received spinel frames with error.
4686*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4687*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_SPINEL_ERR = SPINEL_PROP_CNTR__BEGIN + 302,
4688*cfb92d14SAndroid Build Coastguard Worker 
4689*cfb92d14SAndroid Build Coastguard Worker     /// Number of out of order received spinel frames (tid increase by more than 1).
4690*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4691*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_RX_SPINEL_OUT_OF_ORDER_TID = SPINEL_PROP_CNTR__BEGIN + 303,
4692*cfb92d14SAndroid Build Coastguard Worker 
4693*cfb92d14SAndroid Build Coastguard Worker     /// The number of successful Tx IP packets
4694*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4695*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_IP_TX_SUCCESS = SPINEL_PROP_CNTR__BEGIN + 304,
4696*cfb92d14SAndroid Build Coastguard Worker 
4697*cfb92d14SAndroid Build Coastguard Worker     /// The number of successful Rx IP packets
4698*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4699*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_IP_RX_SUCCESS = SPINEL_PROP_CNTR__BEGIN + 305,
4700*cfb92d14SAndroid Build Coastguard Worker 
4701*cfb92d14SAndroid Build Coastguard Worker     /// The number of failed Tx IP packets
4702*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4703*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_IP_TX_FAILURE = SPINEL_PROP_CNTR__BEGIN + 306,
4704*cfb92d14SAndroid Build Coastguard Worker 
4705*cfb92d14SAndroid Build Coastguard Worker     /// The number of failed Rx IP packets
4706*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` (Read-only) */
4707*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_IP_RX_FAILURE = SPINEL_PROP_CNTR__BEGIN + 307,
4708*cfb92d14SAndroid Build Coastguard Worker 
4709*cfb92d14SAndroid Build Coastguard Worker     /// The message buffer counter info
4710*cfb92d14SAndroid Build Coastguard Worker     /** Format: `SSSSSSSSSSSSSSSS` (Read-only)
4711*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (TotalBuffers)           The number of buffers in the pool.
4712*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (FreeBuffers)            The number of free message buffers.
4713*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (6loSendMessages)        The number of messages in the 6lo send queue.
4714*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (6loSendBuffers)         The number of buffers in the 6lo send queue.
4715*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (6loReassemblyMessages)  The number of messages in the 6LoWPAN reassembly queue.
4716*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (6loReassemblyBuffers)   The number of buffers in the 6LoWPAN reassembly queue.
4717*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (Ip6Messages)            The number of messages in the IPv6 send queue.
4718*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (Ip6Buffers)             The number of buffers in the IPv6 send queue.
4719*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (MplMessages)            The number of messages in the MPL send queue.
4720*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (MplBuffers)             The number of buffers in the MPL send queue.
4721*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (MleMessages)            The number of messages in the MLE send queue.
4722*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (MleBuffers)             The number of buffers in the MLE send queue.
4723*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (ArpMessages)            The number of messages in the ARP send queue.
4724*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (ArpBuffers)             The number of buffers in the ARP send queue.
4725*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (CoapMessages)           The number of messages in the CoAP send queue.
4726*cfb92d14SAndroid Build Coastguard Worker      *      `S`, (CoapBuffers)            The number of buffers in the CoAP send queue.
4727*cfb92d14SAndroid Build Coastguard Worker      */
4728*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MSG_BUFFER_COUNTERS = SPINEL_PROP_CNTR__BEGIN + 400,
4729*cfb92d14SAndroid Build Coastguard Worker 
4730*cfb92d14SAndroid Build Coastguard Worker     /// All MAC related counters.
4731*cfb92d14SAndroid Build Coastguard Worker     /** Format: t(A(L))t(A(L))
4732*cfb92d14SAndroid Build Coastguard Worker      *
4733*cfb92d14SAndroid Build Coastguard Worker      * The contents include two structs, first one corresponds to
4734*cfb92d14SAndroid Build Coastguard Worker      * all transmit related MAC counters, second one provides the
4735*cfb92d14SAndroid Build Coastguard Worker      * receive related counters.
4736*cfb92d14SAndroid Build Coastguard Worker      *
4737*cfb92d14SAndroid Build Coastguard Worker      * The transmit structure includes:
4738*cfb92d14SAndroid Build Coastguard Worker      *
4739*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxTotal                  (The total number of transmissions).
4740*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxUnicast                (The total number of unicast transmissions).
4741*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxBroadcast              (The total number of broadcast transmissions).
4742*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxAckRequested           (The number of transmissions with ack request).
4743*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxAcked                  (The number of transmissions that were acked).
4744*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxNoAckRequested         (The number of transmissions without ack request).
4745*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxData                   (The number of transmitted data).
4746*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxDataPoll               (The number of transmitted data poll).
4747*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxBeacon                 (The number of transmitted beacon).
4748*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxBeaconRequest          (The number of transmitted beacon request).
4749*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxOther                  (The number of transmitted other types of frames).
4750*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxRetry                  (The number of retransmission times).
4751*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxErrCca                 (The number of CCA failure times).
4752*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxErrAbort               (The number of frame transmission failures due to abort error).
4753*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxErrBusyChannel         (The number of frames that were dropped due to a busy channel).
4754*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxDirectMaxRetryExpiry   (The number of expired retransmission retries for direct message).
4755*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxIndirectMaxRetryExpiry (The number of expired retransmission retries for indirect message).
4756*cfb92d14SAndroid Build Coastguard Worker      *
4757*cfb92d14SAndroid Build Coastguard Worker      * The receive structure includes:
4758*cfb92d14SAndroid Build Coastguard Worker      *
4759*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxTotal                  (The total number of received packets).
4760*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxUnicast                (The total number of unicast packets received).
4761*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxBroadcast              (The total number of broadcast packets received).
4762*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxData                   (The number of received data).
4763*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxDataPoll               (The number of received data poll).
4764*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxBeacon                 (The number of received beacon).
4765*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxBeaconRequest          (The number of received beacon request).
4766*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxOther                  (The number of received other types of frames).
4767*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxAddressFiltered        (The number of received packets filtered by address filter
4768*cfb92d14SAndroid Build Coastguard Worker      *                                  (allowlist or denylist)).
4769*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxDestAddrFiltered       (The number of received packets filtered by destination check).
4770*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxDuplicated             (The number of received duplicated packets).
4771*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxErrNoFrame             (The number of received packets with no or malformed content).
4772*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxErrUnknownNeighbor     (The number of received packets from unknown neighbor).
4773*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxErrInvalidSrcAddr      (The number of received packets whose source address is invalid).
4774*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxErrSec                 (The number of received packets with security error).
4775*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxErrFcs                 (The number of received packets with FCS error).
4776*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxErrOther               (The number of received packets with other error).
4777*cfb92d14SAndroid Build Coastguard Worker      *
4778*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property with any value would reset all MAC counters to zero.
4779*cfb92d14SAndroid Build Coastguard Worker      *
4780*cfb92d14SAndroid Build Coastguard Worker      */
4781*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_ALL_MAC_COUNTERS = SPINEL_PROP_CNTR__BEGIN + 401,
4782*cfb92d14SAndroid Build Coastguard Worker 
4783*cfb92d14SAndroid Build Coastguard Worker     /// Thread MLE counters.
4784*cfb92d14SAndroid Build Coastguard Worker     /** Format: `SSSSSSSSS`
4785*cfb92d14SAndroid Build Coastguard Worker      *
4786*cfb92d14SAndroid Build Coastguard Worker      *   'S': DisabledRole                  (The number of times device entered OT_DEVICE_ROLE_DISABLED role).
4787*cfb92d14SAndroid Build Coastguard Worker      *   'S': DetachedRole                  (The number of times device entered OT_DEVICE_ROLE_DETACHED role).
4788*cfb92d14SAndroid Build Coastguard Worker      *   'S': ChildRole                     (The number of times device entered OT_DEVICE_ROLE_CHILD role).
4789*cfb92d14SAndroid Build Coastguard Worker      *   'S': RouterRole                    (The number of times device entered OT_DEVICE_ROLE_ROUTER role).
4790*cfb92d14SAndroid Build Coastguard Worker      *   'S': LeaderRole                    (The number of times device entered OT_DEVICE_ROLE_LEADER role).
4791*cfb92d14SAndroid Build Coastguard Worker      *   'S': AttachAttempts                (The number of attach attempts while device was detached).
4792*cfb92d14SAndroid Build Coastguard Worker      *   'S': PartitionIdChanges            (The number of changes to partition ID).
4793*cfb92d14SAndroid Build Coastguard Worker      *   'S': BetterPartitionAttachAttempts (The number of attempts to attach to a better partition).
4794*cfb92d14SAndroid Build Coastguard Worker      *   'S': ParentChanges                 (The number of times device changed its parents).
4795*cfb92d14SAndroid Build Coastguard Worker      *
4796*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property with any value would reset all MLE counters to zero.
4797*cfb92d14SAndroid Build Coastguard Worker      *
4798*cfb92d14SAndroid Build Coastguard Worker      */
4799*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_MLE_COUNTERS = SPINEL_PROP_CNTR__BEGIN + 402,
4800*cfb92d14SAndroid Build Coastguard Worker 
4801*cfb92d14SAndroid Build Coastguard Worker     /// Thread IPv6 counters.
4802*cfb92d14SAndroid Build Coastguard Worker     /** Format: `t(LL)t(LL)`
4803*cfb92d14SAndroid Build Coastguard Worker      *
4804*cfb92d14SAndroid Build Coastguard Worker      * The contents include two structs, first one corresponds to
4805*cfb92d14SAndroid Build Coastguard Worker      * all transmit related MAC counters, second one provides the
4806*cfb92d14SAndroid Build Coastguard Worker      * receive related counters.
4807*cfb92d14SAndroid Build Coastguard Worker      *
4808*cfb92d14SAndroid Build Coastguard Worker      * The transmit structure includes:
4809*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxSuccess (The number of IPv6 packets successfully transmitted).
4810*cfb92d14SAndroid Build Coastguard Worker      *   'L': TxFailure (The number of IPv6 packets failed to transmit).
4811*cfb92d14SAndroid Build Coastguard Worker      *
4812*cfb92d14SAndroid Build Coastguard Worker      * The receive structure includes:
4813*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxSuccess (The number of IPv6 packets successfully received).
4814*cfb92d14SAndroid Build Coastguard Worker      *   'L': RxFailure (The number of IPv6 packets failed to receive).
4815*cfb92d14SAndroid Build Coastguard Worker      *
4816*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property with any value would reset all IPv6 counters to zero.
4817*cfb92d14SAndroid Build Coastguard Worker      *
4818*cfb92d14SAndroid Build Coastguard Worker      */
4819*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_ALL_IP_COUNTERS = SPINEL_PROP_CNTR__BEGIN + 403,
4820*cfb92d14SAndroid Build Coastguard Worker 
4821*cfb92d14SAndroid Build Coastguard Worker     /// MAC retry histogram.
4822*cfb92d14SAndroid Build Coastguard Worker     /** Format: t(A(L))t(A(L))
4823*cfb92d14SAndroid Build Coastguard Worker      *
4824*cfb92d14SAndroid Build Coastguard Worker      * Required capability: SPINEL_CAP_MAC_RETRY_HISTOGRAM
4825*cfb92d14SAndroid Build Coastguard Worker      *
4826*cfb92d14SAndroid Build Coastguard Worker      * The contents include two structs, first one is histogram which corresponds to retransmissions number of direct
4827*cfb92d14SAndroid Build Coastguard Worker      * messages, second one provides the histogram of retransmissions for indirect messages.
4828*cfb92d14SAndroid Build Coastguard Worker      *
4829*cfb92d14SAndroid Build Coastguard Worker      * The first structure includes:
4830*cfb92d14SAndroid Build Coastguard Worker      *   'L': DirectRetry[0]                   (The number of packets after 0 retry).
4831*cfb92d14SAndroid Build Coastguard Worker      *   'L': DirectRetry[1]                   (The number of packets after 1 retry).
4832*cfb92d14SAndroid Build Coastguard Worker      *    ...
4833*cfb92d14SAndroid Build Coastguard Worker      *   'L': DirectRetry[n]                   (The number of packets after n retry).
4834*cfb92d14SAndroid Build Coastguard Worker      *
4835*cfb92d14SAndroid Build Coastguard Worker      * The size of the array is OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_DIRECT.
4836*cfb92d14SAndroid Build Coastguard Worker      *
4837*cfb92d14SAndroid Build Coastguard Worker      * The second structure includes:
4838*cfb92d14SAndroid Build Coastguard Worker      *   'L': IndirectRetry[0]                   (The number of packets after 0 retry).
4839*cfb92d14SAndroid Build Coastguard Worker      *   'L': IndirectRetry[1]                   (The number of packets after 1 retry).
4840*cfb92d14SAndroid Build Coastguard Worker      *    ...
4841*cfb92d14SAndroid Build Coastguard Worker      *   'L': IndirectRetry[m]                   (The number of packets after m retry).
4842*cfb92d14SAndroid Build Coastguard Worker      *
4843*cfb92d14SAndroid Build Coastguard Worker      * The size of the array is OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_INDIRECT.
4844*cfb92d14SAndroid Build Coastguard Worker      *
4845*cfb92d14SAndroid Build Coastguard Worker      * Writing to this property with any value would reset MAC retry histogram.
4846*cfb92d14SAndroid Build Coastguard Worker      *
4847*cfb92d14SAndroid Build Coastguard Worker      */
4848*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR_MAC_RETRY_HISTOGRAM = SPINEL_PROP_CNTR__BEGIN + 404,
4849*cfb92d14SAndroid Build Coastguard Worker 
4850*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_CNTR__END = 0x800,
4851*cfb92d14SAndroid Build Coastguard Worker 
4852*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_EXT__BEGIN = 0x800,
4853*cfb92d14SAndroid Build Coastguard Worker 
4854*cfb92d14SAndroid Build Coastguard Worker     /// MAC Key
4855*cfb92d14SAndroid Build Coastguard Worker     /** Format: `CCddd`.
4856*cfb92d14SAndroid Build Coastguard Worker      *
4857*cfb92d14SAndroid Build Coastguard Worker      *  `C`: MAC key ID mode
4858*cfb92d14SAndroid Build Coastguard Worker      *  `C`: MAC key ID
4859*cfb92d14SAndroid Build Coastguard Worker      *  `d`: previous MAC key material data
4860*cfb92d14SAndroid Build Coastguard Worker      *  `d`: current MAC key material data
4861*cfb92d14SAndroid Build Coastguard Worker      *  `d`: next MAC key material data
4862*cfb92d14SAndroid Build Coastguard Worker      *
4863*cfb92d14SAndroid Build Coastguard Worker      * The Spinel property is used to set/get MAC key materials to and from RCP.
4864*cfb92d14SAndroid Build Coastguard Worker      *
4865*cfb92d14SAndroid Build Coastguard Worker      */
4866*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_MAC_KEY = SPINEL_PROP_RCP_EXT__BEGIN + 0,
4867*cfb92d14SAndroid Build Coastguard Worker 
4868*cfb92d14SAndroid Build Coastguard Worker     /// MAC Frame Counter
4869*cfb92d14SAndroid Build Coastguard Worker     /** Format: `L` for read and `Lb` or `L` for write
4870*cfb92d14SAndroid Build Coastguard Worker      *
4871*cfb92d14SAndroid Build Coastguard Worker      *  `L`: MAC frame counter
4872*cfb92d14SAndroid Build Coastguard Worker      *  'b': Optional boolean used only during write. If not provided, `false` is assumed.
4873*cfb92d14SAndroid Build Coastguard Worker      *       If `true` counter is set only if the new value is larger than current value.
4874*cfb92d14SAndroid Build Coastguard Worker      *       If `false` the new value is set as frame counter independent of the current value.
4875*cfb92d14SAndroid Build Coastguard Worker      *
4876*cfb92d14SAndroid Build Coastguard Worker      * The Spinel property is used to set MAC frame counter to RCP.
4877*cfb92d14SAndroid Build Coastguard Worker      *
4878*cfb92d14SAndroid Build Coastguard Worker      */
4879*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_MAC_FRAME_COUNTER = SPINEL_PROP_RCP_EXT__BEGIN + 1,
4880*cfb92d14SAndroid Build Coastguard Worker 
4881*cfb92d14SAndroid Build Coastguard Worker     /// Timestamps when Spinel frame is received and transmitted
4882*cfb92d14SAndroid Build Coastguard Worker     /** Format: `X`.
4883*cfb92d14SAndroid Build Coastguard Worker      *
4884*cfb92d14SAndroid Build Coastguard Worker      *  `X`: Spinel frame transmit timestamp
4885*cfb92d14SAndroid Build Coastguard Worker      *
4886*cfb92d14SAndroid Build Coastguard Worker      * The Spinel property is used to get timestamp from RCP to calculate host and RCP timer difference.
4887*cfb92d14SAndroid Build Coastguard Worker      *
4888*cfb92d14SAndroid Build Coastguard Worker      */
4889*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_TIMESTAMP = SPINEL_PROP_RCP_EXT__BEGIN + 2,
4890*cfb92d14SAndroid Build Coastguard Worker 
4891*cfb92d14SAndroid Build Coastguard Worker     /// Configure Enhanced ACK probing
4892*cfb92d14SAndroid Build Coastguard Worker     /** Format: `SEC` (Write-only).
4893*cfb92d14SAndroid Build Coastguard Worker      *
4894*cfb92d14SAndroid Build Coastguard Worker      * `S`: Short address
4895*cfb92d14SAndroid Build Coastguard Worker      * `E`: Extended address
4896*cfb92d14SAndroid Build Coastguard Worker      * `C`: List of requested metric ids encoded as bit fields in single byte
4897*cfb92d14SAndroid Build Coastguard Worker      *
4898*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
4899*cfb92d14SAndroid Build Coastguard Worker      *   |    Metric     | Id |
4900*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
4901*cfb92d14SAndroid Build Coastguard Worker      *   | Received PDUs |  0 |
4902*cfb92d14SAndroid Build Coastguard Worker      *   | LQI           |  1 |
4903*cfb92d14SAndroid Build Coastguard Worker      *   | Link margin   |  2 |
4904*cfb92d14SAndroid Build Coastguard Worker      *   | RSSI          |  3 |
4905*cfb92d14SAndroid Build Coastguard Worker      *   +---------------+----+
4906*cfb92d14SAndroid Build Coastguard Worker      *
4907*cfb92d14SAndroid Build Coastguard Worker      * Enable/disable or update Enhanced-ACK Based Probing in radio for a specific Initiator.
4908*cfb92d14SAndroid Build Coastguard Worker      *
4909*cfb92d14SAndroid Build Coastguard Worker      */
4910*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_ENH_ACK_PROBING = SPINEL_PROP_RCP_EXT__BEGIN + 3,
4911*cfb92d14SAndroid Build Coastguard Worker 
4912*cfb92d14SAndroid Build Coastguard Worker     /// CSL Accuracy
4913*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
4914*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
4915*cfb92d14SAndroid Build Coastguard Worker      *
4916*cfb92d14SAndroid Build Coastguard Worker      * The current CSL rx/tx scheduling drift, in units of ± ppm.
4917*cfb92d14SAndroid Build Coastguard Worker      *
4918*cfb92d14SAndroid Build Coastguard Worker      */
4919*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_CSL_ACCURACY = SPINEL_PROP_RCP_EXT__BEGIN + 4,
4920*cfb92d14SAndroid Build Coastguard Worker 
4921*cfb92d14SAndroid Build Coastguard Worker     /// CSL Uncertainty
4922*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
4923*cfb92d14SAndroid Build Coastguard Worker      * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
4924*cfb92d14SAndroid Build Coastguard Worker      *
4925*cfb92d14SAndroid Build Coastguard Worker      * The current uncertainty, in units of 10 us, of the clock used for scheduling CSL operations.
4926*cfb92d14SAndroid Build Coastguard Worker      *
4927*cfb92d14SAndroid Build Coastguard Worker      */
4928*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_CSL_UNCERTAINTY = SPINEL_PROP_RCP_EXT__BEGIN + 5,
4929*cfb92d14SAndroid Build Coastguard Worker 
4930*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_RCP_EXT__END = 0x900,
4931*cfb92d14SAndroid Build Coastguard Worker 
4932*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MULTIPAN__BEGIN = 0x900,
4933*cfb92d14SAndroid Build Coastguard Worker 
4934*cfb92d14SAndroid Build Coastguard Worker     /// Multipan interface selection.
4935*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C`
4936*cfb92d14SAndroid Build Coastguard Worker      * Type: Read-Write
4937*cfb92d14SAndroid Build Coastguard Worker      *
4938*cfb92d14SAndroid Build Coastguard Worker      * `C`: b[0-1] - Interface id.
4939*cfb92d14SAndroid Build Coastguard Worker      *      b[7]   - 1: Complete pending radio operation, 0: immediate(force) switch.
4940*cfb92d14SAndroid Build Coastguard Worker      *
4941*cfb92d14SAndroid Build Coastguard Worker      * This feature gets or sets the radio interface to be used in multipan configuration
4942*cfb92d14SAndroid Build Coastguard Worker      *
4943*cfb92d14SAndroid Build Coastguard Worker      * Default value: 0
4944*cfb92d14SAndroid Build Coastguard Worker      *
4945*cfb92d14SAndroid Build Coastguard Worker      */
4946*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MULTIPAN_ACTIVE_INTERFACE = SPINEL_PROP_MULTIPAN__BEGIN + 0,
4947*cfb92d14SAndroid Build Coastguard Worker 
4948*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_MULTIPAN__END = 0x910,
4949*cfb92d14SAndroid Build Coastguard Worker 
4950*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NEST__BEGIN = 0x3BC0,
4951*cfb92d14SAndroid Build Coastguard Worker 
4952*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NEST_STREAM_MFG = SPINEL_PROP_NEST__BEGIN + 0,
4953*cfb92d14SAndroid Build Coastguard Worker 
4954*cfb92d14SAndroid Build Coastguard Worker     /// The legacy network ULA prefix (8 bytes).
4955*cfb92d14SAndroid Build Coastguard Worker     /** Format: 'D'
4956*cfb92d14SAndroid Build Coastguard Worker      *
4957*cfb92d14SAndroid Build Coastguard Worker      * This property is deprecated.
4958*cfb92d14SAndroid Build Coastguard Worker      *
4959*cfb92d14SAndroid Build Coastguard Worker      */
4960*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NEST_LEGACY_ULA_PREFIX = SPINEL_PROP_NEST__BEGIN + 1,
4961*cfb92d14SAndroid Build Coastguard Worker 
4962*cfb92d14SAndroid Build Coastguard Worker     /// The EUI64 of last node joined using legacy protocol (if none, all zero EUI64 is returned).
4963*cfb92d14SAndroid Build Coastguard Worker     /** Format: 'E'
4964*cfb92d14SAndroid Build Coastguard Worker      *
4965*cfb92d14SAndroid Build Coastguard Worker      * This property is deprecated.
4966*cfb92d14SAndroid Build Coastguard Worker      *
4967*cfb92d14SAndroid Build Coastguard Worker      */
4968*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NEST_LEGACY_LAST_NODE_JOINED = SPINEL_PROP_NEST__BEGIN + 2,
4969*cfb92d14SAndroid Build Coastguard Worker 
4970*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_NEST__END = 0x3C00,
4971*cfb92d14SAndroid Build Coastguard Worker 
4972*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_VENDOR__BEGIN = 0x3C00,
4973*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_VENDOR__END   = 0x4000,
4974*cfb92d14SAndroid Build Coastguard Worker 
4975*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_VENDOR_ESP__BEGIN = (SPINEL_PROP_VENDOR__BEGIN + 0),
4976*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_VENDOR_ESP__END   = (SPINEL_PROP_VENDOR__BEGIN + 128),
4977*cfb92d14SAndroid Build Coastguard Worker 
4978*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DEBUG__BEGIN = 0x4000,
4979*cfb92d14SAndroid Build Coastguard Worker 
4980*cfb92d14SAndroid Build Coastguard Worker     /// Testing platform assert
4981*cfb92d14SAndroid Build Coastguard Worker     /** Format: 'b' (read-only)
4982*cfb92d14SAndroid Build Coastguard Worker      *
4983*cfb92d14SAndroid Build Coastguard Worker      * Reading this property will cause an assert on the NCP. This is intended for testing the assert functionality of
4984*cfb92d14SAndroid Build Coastguard Worker      * underlying platform/NCP. Assert should ideally cause the NCP to reset, but if this is not supported a `false`
4985*cfb92d14SAndroid Build Coastguard Worker      * boolean is returned in response.
4986*cfb92d14SAndroid Build Coastguard Worker      *
4987*cfb92d14SAndroid Build Coastguard Worker      */
4988*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DEBUG_TEST_ASSERT = SPINEL_PROP_DEBUG__BEGIN + 0,
4989*cfb92d14SAndroid Build Coastguard Worker 
4990*cfb92d14SAndroid Build Coastguard Worker     /// The NCP log level.
4991*cfb92d14SAndroid Build Coastguard Worker     /** Format: `C` */
4992*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DEBUG_NCP_LOG_LEVEL = SPINEL_PROP_DEBUG__BEGIN + 1,
4993*cfb92d14SAndroid Build Coastguard Worker 
4994*cfb92d14SAndroid Build Coastguard Worker     /// Testing platform watchdog
4995*cfb92d14SAndroid Build Coastguard Worker     /** Format: Empty  (read-only)
4996*cfb92d14SAndroid Build Coastguard Worker      *
4997*cfb92d14SAndroid Build Coastguard Worker      * Reading this property will causes NCP to start a `while(true) ;` loop and thus triggering a watchdog.
4998*cfb92d14SAndroid Build Coastguard Worker      *
4999*cfb92d14SAndroid Build Coastguard Worker      * This is intended for testing the watchdog functionality on the underlying platform/NCP.
5000*cfb92d14SAndroid Build Coastguard Worker      *
5001*cfb92d14SAndroid Build Coastguard Worker      */
5002*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DEBUG_TEST_WATCHDOG = SPINEL_PROP_DEBUG__BEGIN + 2,
5003*cfb92d14SAndroid Build Coastguard Worker 
5004*cfb92d14SAndroid Build Coastguard Worker     /// The NCP timestamp base
5005*cfb92d14SAndroid Build Coastguard Worker     /** Format: X (write-only)
5006*cfb92d14SAndroid Build Coastguard Worker      *
5007*cfb92d14SAndroid Build Coastguard Worker      * This property controls the time base value that is used for logs timestamp field calculation.
5008*cfb92d14SAndroid Build Coastguard Worker      *
5009*cfb92d14SAndroid Build Coastguard Worker      */
5010*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DEBUG_LOG_TIMESTAMP_BASE = SPINEL_PROP_DEBUG__BEGIN + 3,
5011*cfb92d14SAndroid Build Coastguard Worker 
5012*cfb92d14SAndroid Build Coastguard Worker     /// TREL Radio Link - test mode enable
5013*cfb92d14SAndroid Build Coastguard Worker     /** Format `b` (read-write)
5014*cfb92d14SAndroid Build Coastguard Worker      *
5015*cfb92d14SAndroid Build Coastguard Worker      * This property is intended for testing TREL (Thread Radio Encapsulation Link) radio type only (during simulation).
5016*cfb92d14SAndroid Build Coastguard Worker      * It allows the TREL interface to be temporarily disabled and (re)enabled.  While disabled all traffic through
5017*cfb92d14SAndroid Build Coastguard Worker      * TREL interface is dropped silently (to emulate a radio/interface down scenario).
5018*cfb92d14SAndroid Build Coastguard Worker      *
5019*cfb92d14SAndroid Build Coastguard Worker      * This property is only available when the TREL radio link type is supported.
5020*cfb92d14SAndroid Build Coastguard Worker      *
5021*cfb92d14SAndroid Build Coastguard Worker      */
5022*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DEBUG_TREL_TEST_MODE_ENABLE = SPINEL_PROP_DEBUG__BEGIN + 4,
5023*cfb92d14SAndroid Build Coastguard Worker 
5024*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_DEBUG__END = 0x4400,
5025*cfb92d14SAndroid Build Coastguard Worker 
5026*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_EXPERIMENTAL__BEGIN = 2000000,
5027*cfb92d14SAndroid Build Coastguard Worker     SPINEL_PROP_EXPERIMENTAL__END   = 2097152,
5028*cfb92d14SAndroid Build Coastguard Worker };
5029*cfb92d14SAndroid Build Coastguard Worker 
5030*cfb92d14SAndroid Build Coastguard Worker typedef uint32_t spinel_prop_key_t;
5031*cfb92d14SAndroid Build Coastguard Worker 
5032*cfb92d14SAndroid Build Coastguard Worker // ----------------------------------------------------------------------------
5033*cfb92d14SAndroid Build Coastguard Worker 
5034*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_FLAG 0x80
5035*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_FLAGS_SHIFT 6
5036*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_FLAGS_MASK (3 << SPINEL_HEADER_FLAGS_SHIFT)
5037*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_GET_FLAG(x) (((x)&SPINEL_HEADER_FLAGS_MASK) >> SPINEL_HEADER_FLAGS_SHIFT)
5038*cfb92d14SAndroid Build Coastguard Worker 
5039*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_TID_SHIFT 0
5040*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_TID_MASK (15 << SPINEL_HEADER_TID_SHIFT)
5041*cfb92d14SAndroid Build Coastguard Worker 
5042*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_IID_SHIFT 4
5043*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_IID_MASK (3 << SPINEL_HEADER_IID_SHIFT)
5044*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_IID(iid) (static_cast<uint8_t>((iid) << SPINEL_HEADER_IID_SHIFT))
5045*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_IID_MAX 3
5046*cfb92d14SAndroid Build Coastguard Worker 
5047*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_IID_0 SPINEL_HEADER_IID(0)
5048*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_IID_1 SPINEL_HEADER_IID(1)
5049*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_IID_2 SPINEL_HEADER_IID(2)
5050*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_IID_3 SPINEL_HEADER_IID(3)
5051*cfb92d14SAndroid Build Coastguard Worker 
5052*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_INVALID_IID 0xFF
5053*cfb92d14SAndroid Build Coastguard Worker 
5054*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_GET_IID(x) (((x)&SPINEL_HEADER_IID_MASK) >> SPINEL_HEADER_IID_SHIFT)
5055*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_HEADER_GET_TID(x) (spinel_tid_t)(((x)&SPINEL_HEADER_TID_MASK) >> SPINEL_HEADER_TID_SHIFT)
5056*cfb92d14SAndroid Build Coastguard Worker 
5057*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_GET_NEXT_TID(x) (spinel_tid_t)((x) >= 0xF ? 1 : (x) + 1)
5058*cfb92d14SAndroid Build Coastguard Worker 
5059*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_BEACON_THREAD_FLAG_VERSION_SHIFT 4
5060*cfb92d14SAndroid Build Coastguard Worker 
5061*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_BEACON_THREAD_FLAG_VERSION_MASK (0xf << SPINEL_BEACON_THREAD_FLAG_VERSION_SHIFT)
5062*cfb92d14SAndroid Build Coastguard Worker 
5063*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_BEACON_THREAD_FLAG_JOINABLE (1 << 0)
5064*cfb92d14SAndroid Build Coastguard Worker 
5065*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_BEACON_THREAD_FLAG_NATIVE (1 << 3)
5066*cfb92d14SAndroid Build Coastguard Worker 
5067*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_MULTIPAN_INTERFACE_SOFT_SWITCH_SHIFT 7
5068*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_MULTIPAN_INTERFACE_SOFT_SWITCH_MASK (1 << SPINEL_MULTIPAN_INTERFACE_SOFT_SWITCH_SHIFT)
5069*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_MULTIPAN_INTERFACE_ID_MASK 0x03
5070*cfb92d14SAndroid Build Coastguard Worker 
5071*cfb92d14SAndroid Build Coastguard Worker // ----------------------------------------------------------------------------
5072*cfb92d14SAndroid Build Coastguard Worker 
5073*cfb92d14SAndroid Build Coastguard Worker enum
5074*cfb92d14SAndroid Build Coastguard Worker {
5075*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_NULL_C        = 0,
5076*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_VOID_C        = '.',
5077*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_BOOL_C        = 'b',
5078*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_UINT8_C       = 'C',
5079*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_INT8_C        = 'c',
5080*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_UINT16_C      = 'S',
5081*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_INT16_C       = 's',
5082*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_UINT32_C      = 'L',
5083*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_INT32_C       = 'l',
5084*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_UINT64_C      = 'X',
5085*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_INT64_C       = 'x',
5086*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_UINT_PACKED_C = 'i',
5087*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_IPv6ADDR_C    = '6',
5088*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_EUI64_C       = 'E',
5089*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_EUI48_C       = 'e',
5090*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_DATA_WLEN_C   = 'd',
5091*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_DATA_C        = 'D',
5092*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_UTF8_C        = 'U', //!< Zero-Terminated UTF8-Encoded String
5093*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_STRUCT_C      = 't',
5094*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_ARRAY_C       = 'A',
5095*cfb92d14SAndroid Build Coastguard Worker };
5096*cfb92d14SAndroid Build Coastguard Worker 
5097*cfb92d14SAndroid Build Coastguard Worker typedef char spinel_datatype_t;
5098*cfb92d14SAndroid Build Coastguard Worker 
5099*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_NULL_S ""
5100*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_VOID_S "."
5101*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_BOOL_S "b"
5102*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_UINT8_S "C"
5103*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_INT8_S "c"
5104*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_UINT16_S "S"
5105*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_INT16_S "s"
5106*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_UINT32_S "L"
5107*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_INT32_S "l"
5108*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_UINT64_S "X"
5109*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_INT64_S "x"
5110*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_UINT_PACKED_S "i"
5111*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_IPv6ADDR_S "6"
5112*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_EUI64_S "E"
5113*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_EUI48_S "e"
5114*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_DATA_WLEN_S "d"
5115*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_DATA_S "D"
5116*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_UTF8_S "U" //!< Zero-Terminated UTF8-Encoded String
5117*cfb92d14SAndroid Build Coastguard Worker 
5118*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_ARRAY_S(x) "A(" x ")"
5119*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_STRUCT_S(x) "t(" x ")"
5120*cfb92d14SAndroid Build Coastguard Worker 
5121*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_ARRAY_STRUCT_S(x) SPINEL_DATATYPE_ARRAY_S(SPINEL_DATATYPE_STRUCT_WLEN_S(x))
5122*cfb92d14SAndroid Build Coastguard Worker 
5123*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_COMMAND_S                   \
5124*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_UINT8_S           /* header  */ \
5125*cfb92d14SAndroid Build Coastguard Worker         SPINEL_DATATYPE_UINT_PACKED_S /* command */
5126*cfb92d14SAndroid Build Coastguard Worker 
5127*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_DATATYPE_COMMAND_PROP_S                    \
5128*cfb92d14SAndroid Build Coastguard Worker     SPINEL_DATATYPE_COMMAND_S         /* prop command  */ \
5129*cfb92d14SAndroid Build Coastguard Worker         SPINEL_DATATYPE_UINT_PACKED_S /* property id */
5130*cfb92d14SAndroid Build Coastguard Worker 
5131*cfb92d14SAndroid Build Coastguard Worker #define SPINEL_MAX_UINT_PACKED 2097151
5132*cfb92d14SAndroid Build Coastguard Worker 
5133*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN spinel_ssize_t spinel_datatype_pack(uint8_t      *data_out,
5134*cfb92d14SAndroid Build Coastguard Worker                                                       spinel_size_t data_len_max,
5135*cfb92d14SAndroid Build Coastguard Worker                                                       const char   *pack_format,
5136*cfb92d14SAndroid Build Coastguard Worker                                                       ...);
5137*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN spinel_ssize_t spinel_datatype_vpack(uint8_t      *data_out,
5138*cfb92d14SAndroid Build Coastguard Worker                                                        spinel_size_t data_len_max,
5139*cfb92d14SAndroid Build Coastguard Worker                                                        const char   *pack_format,
5140*cfb92d14SAndroid Build Coastguard Worker                                                        va_list       args);
5141*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN spinel_ssize_t spinel_datatype_unpack(const uint8_t *data_in,
5142*cfb92d14SAndroid Build Coastguard Worker                                                         spinel_size_t  data_len,
5143*cfb92d14SAndroid Build Coastguard Worker                                                         const char    *pack_format,
5144*cfb92d14SAndroid Build Coastguard Worker                                                         ...);
5145*cfb92d14SAndroid Build Coastguard Worker /**
5146*cfb92d14SAndroid Build Coastguard Worker  * Parses spinel data similar to sscanf().
5147*cfb92d14SAndroid Build Coastguard Worker  *
5148*cfb92d14SAndroid Build Coastguard Worker  * Actually calls spinel_datatype_vunpack_in_place() to parse data.
5149*cfb92d14SAndroid Build Coastguard Worker  *
5150*cfb92d14SAndroid Build Coastguard Worker  * @param[in]   data_in     A pointer to the data to parse.
5151*cfb92d14SAndroid Build Coastguard Worker  * @param[in]   data_len    The length of @p data_in in bytes.
5152*cfb92d14SAndroid Build Coastguard Worker  * @param[in]   pack_format C string that contains a format string follows the same specification of spinel.
5153*cfb92d14SAndroid Build Coastguard Worker  * @param[in]   ...         Additional arguments depending on the format string @p pack_format.
5154*cfb92d14SAndroid Build Coastguard Worker  *
5155*cfb92d14SAndroid Build Coastguard Worker  * @returns The parsed length in bytes.
5156*cfb92d14SAndroid Build Coastguard Worker  *
5157*cfb92d14SAndroid Build Coastguard Worker  * @note This function behaves different from `spinel_datatype_unpack()`:
5158*cfb92d14SAndroid Build Coastguard Worker  *       - This function expects composite data arguments of pointer to data type, while `spinel_datatype_unpack()`
5159*cfb92d14SAndroid Build Coastguard Worker  *         expects them of pointer to data type pointer. For example, if `SPINEL_DATATYPE_EUI64_C` is present in
5160*cfb92d14SAndroid Build Coastguard Worker  *         @p pack_format, this function expects a `spinel_eui64_t *` is included in variable arguments, while
5161*cfb92d14SAndroid Build Coastguard Worker  *         `spinel_datatype_unpack()` expects a `spinel_eui64_t **` is included.
5162*cfb92d14SAndroid Build Coastguard Worker  *       - For `SPINEL_DATATYPE_UTF8_C`, this function expects two arguments, the first of type `char *` and the
5163*cfb92d14SAndroid Build Coastguard Worker  *         second is of type `size_t` to indicate length of the provided buffer in the first argument just like
5164*cfb92d14SAndroid Build Coastguard Worker  *         `strncpy()`, while `spinel_datatype_unpack()` only expects a `const char **`.
5165*cfb92d14SAndroid Build Coastguard Worker  *
5166*cfb92d14SAndroid Build Coastguard Worker  * @sa spinel_datatype_vunpack_in_place()
5167*cfb92d14SAndroid Build Coastguard Worker  *
5168*cfb92d14SAndroid Build Coastguard Worker  */
5169*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN spinel_ssize_t spinel_datatype_unpack_in_place(const uint8_t *data_in,
5170*cfb92d14SAndroid Build Coastguard Worker                                                                  spinel_size_t  data_len,
5171*cfb92d14SAndroid Build Coastguard Worker                                                                  const char    *pack_format,
5172*cfb92d14SAndroid Build Coastguard Worker                                                                  ...);
5173*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN spinel_ssize_t spinel_datatype_vunpack(const uint8_t *data_in,
5174*cfb92d14SAndroid Build Coastguard Worker                                                          spinel_size_t  data_len,
5175*cfb92d14SAndroid Build Coastguard Worker                                                          const char    *pack_format,
5176*cfb92d14SAndroid Build Coastguard Worker                                                          va_list        args);
5177*cfb92d14SAndroid Build Coastguard Worker /**
5178*cfb92d14SAndroid Build Coastguard Worker  * Parses spinel data similar to vsscanf().
5179*cfb92d14SAndroid Build Coastguard Worker  *
5180*cfb92d14SAndroid Build Coastguard Worker  * @param[in]   data_in     A pointer to the data to parse.
5181*cfb92d14SAndroid Build Coastguard Worker  * @param[in]   data_len    The length of @p data_in in bytes.
5182*cfb92d14SAndroid Build Coastguard Worker  * @param[in]   pack_format C string that contains a format string follows the same specification of spinel.
5183*cfb92d14SAndroid Build Coastguard Worker  * @param[in]   args        A value identifying a variable arguments list.
5184*cfb92d14SAndroid Build Coastguard Worker  *
5185*cfb92d14SAndroid Build Coastguard Worker  * @returns The parsed length in bytes.
5186*cfb92d14SAndroid Build Coastguard Worker  *
5187*cfb92d14SAndroid Build Coastguard Worker  * @note This function behaves different from `spinel_datatype_vunpack()`:
5188*cfb92d14SAndroid Build Coastguard Worker  *       - This function expects composite data arguments of pointer to data type, while `spinel_datatype_vunpack()`
5189*cfb92d14SAndroid Build Coastguard Worker  *         expects them of pointer to data type pointer. For example, if `SPINEL_DATATYPE_EUI64_C` is present in
5190*cfb92d14SAndroid Build Coastguard Worker  *         @p pack_format, this function expects a `spinel_eui64_t *` is included in variable arguments, while
5191*cfb92d14SAndroid Build Coastguard Worker  *         `spinel_datatype_vunpack()` expects a `spinel_eui64_t **` is included.
5192*cfb92d14SAndroid Build Coastguard Worker  *       - For `SPINEL_DATATYPE_UTF8_C`, this function expects two arguments, the first of type `char *` and the
5193*cfb92d14SAndroid Build Coastguard Worker  *         second is of type `size_t` to indicate length of the provided buffer in the first argument just like
5194*cfb92d14SAndroid Build Coastguard Worker  *         `strncpy()`, while `spinel_datatype_vunpack()` only expects a `const char **`.
5195*cfb92d14SAndroid Build Coastguard Worker  *
5196*cfb92d14SAndroid Build Coastguard Worker  * @sa spinel_datatype_unpack_in_place()
5197*cfb92d14SAndroid Build Coastguard Worker  *
5198*cfb92d14SAndroid Build Coastguard Worker  */
5199*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN spinel_ssize_t spinel_datatype_vunpack_in_place(const uint8_t *data_in,
5200*cfb92d14SAndroid Build Coastguard Worker                                                                   spinel_size_t  data_len,
5201*cfb92d14SAndroid Build Coastguard Worker                                                                   const char    *pack_format,
5202*cfb92d14SAndroid Build Coastguard Worker                                                                   va_list        args);
5203*cfb92d14SAndroid Build Coastguard Worker 
5204*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN spinel_ssize_t spinel_packed_uint_decode(const uint8_t *bytes,
5205*cfb92d14SAndroid Build Coastguard Worker                                                            spinel_size_t  len,
5206*cfb92d14SAndroid Build Coastguard Worker                                                            unsigned int  *value_ptr);
5207*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN spinel_ssize_t spinel_packed_uint_encode(uint8_t *bytes, spinel_size_t len, unsigned int value);
5208*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN spinel_ssize_t spinel_packed_uint_size(unsigned int value);
5209*cfb92d14SAndroid Build Coastguard Worker 
5210*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN const char *spinel_next_packed_datatype(const char *pack_format);
5211*cfb92d14SAndroid Build Coastguard Worker 
5212*cfb92d14SAndroid Build Coastguard Worker // ----------------------------------------------------------------------------
5213*cfb92d14SAndroid Build Coastguard Worker 
5214*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN const char *spinel_command_to_cstr(spinel_command_t command);
5215*cfb92d14SAndroid Build Coastguard Worker 
5216*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN const char *spinel_prop_key_to_cstr(spinel_prop_key_t prop_key);
5217*cfb92d14SAndroid Build Coastguard Worker 
5218*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN const char *spinel_net_role_to_cstr(uint8_t net_role);
5219*cfb92d14SAndroid Build Coastguard Worker 
5220*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN const char *spinel_mcu_power_state_to_cstr(uint8_t mcu_power_state);
5221*cfb92d14SAndroid Build Coastguard Worker 
5222*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN const char *spinel_status_to_cstr(spinel_status_t status);
5223*cfb92d14SAndroid Build Coastguard Worker 
5224*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN const char *spinel_capability_to_cstr(spinel_capability_t capability);
5225*cfb92d14SAndroid Build Coastguard Worker 
5226*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN const char *spinel_radio_link_to_cstr(uint32_t radio);
5227*cfb92d14SAndroid Build Coastguard Worker 
5228*cfb92d14SAndroid Build Coastguard Worker SPINEL_API_EXTERN const char *spinel_link_metrics_status_to_cstr(uint8_t status);
5229*cfb92d14SAndroid Build Coastguard Worker 
5230*cfb92d14SAndroid Build Coastguard Worker // ----------------------------------------------------------------------------
5231*cfb92d14SAndroid Build Coastguard Worker 
5232*cfb92d14SAndroid Build Coastguard Worker #if defined(__cplusplus)
5233*cfb92d14SAndroid Build Coastguard Worker }
5234*cfb92d14SAndroid Build Coastguard Worker #endif
5235*cfb92d14SAndroid Build Coastguard Worker 
5236*cfb92d14SAndroid Build Coastguard Worker #endif /* defined(SPINEL_HEADER_INCLUDED) */
5237