Skip to content

Instantly share code, notes, and snippets.

@nraynaud
Created November 5, 2025 10:53
Show Gist options
  • Select an option

  • Save nraynaud/63f0ef700425d28d23c778ec254d2657 to your computer and use it in GitHub Desktop.

Select an option

Save nraynaud/63f0ef700425d28d23c778ec254d2657 to your computer and use it in GitHub Desktop.
spinel.h parsing in python
from enum import Enum
class spinel_status_t(Enum):
#< Operation has completed successfully.
SPINEL_STATUS_OK = 0
#< Operation has failed for some undefined reason.
SPINEL_STATUS_FAILURE = 1
#< Given operation has not been implemented.
SPINEL_STATUS_UNIMPLEMENTED = 2
#< An argument to the operation is invalid.
SPINEL_STATUS_INVALID_ARGUMENT = 3
#< This operation is invalid for the current device state.
SPINEL_STATUS_INVALID_STATE = 4
#< This command is not recognized.
SPINEL_STATUS_INVALID_COMMAND = 5
#< This interface is not supported.
SPINEL_STATUS_INVALID_INTERFACE = 6
#< An internal runtime error has occurred.
SPINEL_STATUS_INTERNAL_ERROR = 7
#< A security/authentication error has occurred.
SPINEL_STATUS_SECURITY_ERROR = 8
#< A error has occurred while parsing the command.
SPINEL_STATUS_PARSE_ERROR = 9
#< This operation is in progress.
SPINEL_STATUS_IN_PROGRESS = 10
#< Operation prevented due to memory pressure.
SPINEL_STATUS_NOMEM = 11
#< The device is currently performing a mutually exclusive operation
SPINEL_STATUS_BUSY = 12
#< The given property is not recognized.
SPINEL_STATUS_PROP_NOT_FOUND = 13
#< A/The packet was dropped.
SPINEL_STATUS_DROPPED = 14
#< The result of the operation is empty.
SPINEL_STATUS_EMPTY = 15
#< The command was too large to fit in the internal buffer.
SPINEL_STATUS_CMD_TOO_BIG = 16
#< The packet was not acknowledged.
SPINEL_STATUS_NO_ACK = 17
#< The packet was not sent due to a CCA failure.
SPINEL_STATUS_CCA_FAILURE = 18
#< The operation is already in progress.
SPINEL_STATUS_ALREADY = 19
#< The given item could not be found.
SPINEL_STATUS_ITEM_NOT_FOUND = 20
#< The given command cannot be performed on this property.
SPINEL_STATUS_INVALID_COMMAND_FOR_PROP = 21
#< The neighbor is unknown.
SPINEL_STATUS_UNKNOWN_NEIGHBOR = 22
#< The target is not capable of handling requested operation.
SPINEL_STATUS_NOT_CAPABLE = 23
#< No response received from remote node
SPINEL_STATUS_RESPONSE_TIMEOUT = 24
SPINEL_STATUS_SWITCHOVER_DONE = 25
#< Radio interface switch failed (SPINEL_PROP_MULTIPAN_ACTIVE_INTERFACE)
SPINEL_STATUS_SWITCHOVER_FAILED = 26
SPINEL_STATUS_JOIN__BEGIN = 104
# Generic failure to associate with other peers.
# /**
# * This status error should not be used by implementers if
# * enough information is available to determine that one of the
# * later join failure status codes would be more accurate.
# *
# * \sa SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_JOIN_FAILURE = 104
# The node found other peers but was unable to decode their packets.
# /**
# * Typically this error code indicates that the network
# * key has been set incorrectly.
# *
# * \sa SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_JOIN_SECURITY = 105
# The node was unable to find any other peers on the network.
# /**
# * \sa SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_JOIN_NO_PEERS = 106
# The only potential peer nodes found are incompatible.
# /**
# * \sa SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING
# */
SPINEL_STATUS_JOIN_INCOMPATIBLE = 107
# No response in expecting time.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_JOIN_RSP_TIMEOUT = 108
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_JOIN_SUCCESS = 109
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_JOIN__END = 112
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_RESET__BEGIN = 112
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_RESET_POWER_ON = 112
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_RESET_EXTERNAL = 113
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_RESET_SOFTWARE = 114
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_RESET_FAULT = 115
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_RESET_CRASH = 116
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_RESET_ASSERT = 117
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_RESET_OTHER = 118
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_RESET_UNKNOWN = 119
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_RESET_WATCHDOG = 120
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_RESET__END = 128
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_VENDOR__BEGIN = 15360
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_VENDOR__END = 16384
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_STACK_NATIVE__BEGIN = 16384
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_STACK_NATIVE__END = 81920
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_EXPERIMENTAL__BEGIN = 2000000
# The node succeeds in commissioning and get the network credentials.
# /**
# * \sa SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING
# */
SPINEL_STATUS_EXPERIMENTAL__END = 2097152
class spinel_net_role_t(Enum):
SPINEL_NET_ROLE_DETACHED = 0
SPINEL_NET_ROLE_CHILD = 1
SPINEL_NET_ROLE_ROUTER = 2
SPINEL_NET_ROLE_LEADER = 3
SPINEL_NET_ROLE_DISABLED = 4
class spinel_ipv6_icmp_ping_offload_mode_t(Enum):
SPINEL_IPV6_ICMP_PING_OFFLOAD_DISABLED = 0
SPINEL_IPV6_ICMP_PING_OFFLOAD_UNICAST_ONLY = 1
SPINEL_IPV6_ICMP_PING_OFFLOAD_MULTICAST_ONLY = 2
SPINEL_IPV6_ICMP_PING_OFFLOAD_ALL = 3
SPINEL_IPV6_ICMP_PING_OFFLOAD_RLOC_ALOC_ONLY = 4
class spinel_scan_state_t(Enum):
SPINEL_SCAN_STATE_IDLE = 0
SPINEL_SCAN_STATE_BEACON = 1
SPINEL_SCAN_STATE_ENERGY = 2
SPINEL_SCAN_STATE_DISCOVER = 3
class spinel_mcu_power_state_t(Enum):
SPINEL_MCU_POWER_STATE_ON = 0
SPINEL_MCU_POWER_STATE_LOW_POWER = 1
SPINEL_MCU_POWER_STATE_OFF = 2
class spinel_power_state_t(Enum):
SPINEL_POWER_STATE_OFFLINE = 0
SPINEL_POWER_STATE_DEEP_SLEEP = 1
SPINEL_POWER_STATE_STANDBY = 2
SPINEL_POWER_STATE_LOW_POWER = 3
SPINEL_POWER_STATE_ONLINE = 4
class spinel_host_power_state_t(Enum):
SPINEL_HOST_POWER_STATE_OFFLINE = 0
SPINEL_HOST_POWER_STATE_DEEP_SLEEP = 1
SPINEL_HOST_POWER_STATE_RESERVED = 2
SPINEL_HOST_POWER_STATE_LOW_POWER = 3
SPINEL_HOST_POWER_STATE_ONLINE = 4
class spinel_meshcop_joiner_state_t(Enum):
SPINEL_MESHCOP_JOINER_STATE_IDLE = 0
SPINEL_MESHCOP_JOINER_STATE_DISCOVER = 1
SPINEL_MESHCOP_JOINER_STATE_CONNECTING = 2
SPINEL_MESHCOP_JOINER_STATE_CONNECTED = 3
SPINEL_MESHCOP_JOINER_STATE_ENTRUST = 4
SPINEL_MESHCOP_JOINER_STATE_JOINED = 5
class MAC_FILTER(Enum):
#< Normal MAC filtering is in place.
SPINEL_MAC_PROMISCUOUS_MODE_OFF = 0
#< All MAC packets matching network are passed up the stack.
SPINEL_MAC_PROMISCUOUS_MODE_NETWORK = 1
#< All decoded MAC packets are passed up the stack.
SPINEL_MAC_PROMISCUOUS_MODE_FULL = 2
class spinel_srp_client_item_state_t(Enum):
SPINEL_SRP_CLIENT_ITEM_STATE_TO_ADD = 0
SPINEL_SRP_CLIENT_ITEM_STATE_ADDING = 1
SPINEL_SRP_CLIENT_ITEM_STATE_TO_REFRESH = 2
SPINEL_SRP_CLIENT_ITEM_STATE_REFRESHING = 3
SPINEL_SRP_CLIENT_ITEM_STATE_TO_REMOVE = 4
SPINEL_SRP_CLIENT_ITEM_STATE_REMOVING = 5
SPINEL_SRP_CLIENT_ITEM_STATE_REGISTERED = 6
SPINEL_SRP_CLIENT_ITEM_STATE_REMOVED = 7
class spinel_srp_client_error_t(Enum):
SPINEL_SRP_CLIENT_ERROR_NONE = 0
SPINEL_SRP_CLIENT_ERROR_PARSE = 1
SPINEL_SRP_CLIENT_ERROR_FAILED = 2
SPINEL_SRP_CLIENT_ERROR_NOT_FOUND = 3
SPINEL_SRP_CLIENT_ERROR_NOT_IMPLEMENTED = 4
SPINEL_SRP_CLIENT_ERROR_SECURITY = 5
SPINEL_SRP_CLIENT_ERROR_DUPLICATED = 6
SPINEL_SRP_CLIENT_ERROR_RESPONSE_TIMEOUT = 7
SPINEL_SRP_CLIENT_ERROR_INVALID_ARGS = 8
SPINEL_SRP_CLIENT_ERROR_NO_BUFS = 9
class spinel_command_t(Enum):
#
# * No-Operation command (Host -> NCP)
# *
# * Encoding: Empty
# *
# * Induces the NCP to send a success status back to the host. This is
# * primarily used for liveliness checks. The command payload for this
# * command SHOULD be empty.
# *
# * There is no error condition for this command.
# */
SPINEL_CMD_NOOP = 0
#
# * Reset NCP command (Host -> NCP)
# *
# * Encoding: Empty or `C`
# *
# * Causes the NCP to perform a software reset. Due to the nature of
# * this command, the TID is ignored. The host should instead wait
# * for a `CMD_PROP_VALUE_IS` command from the NCP indicating
# * `PROP_LAST_STATUS` has been set to `STATUS_RESET_SOFTWARE`.
# *
# * The optional command payload specifies the reset type, can be
# * `SPINEL_RESET_PLATFORM`, `SPINEL_RESET_STACK`, or
# * `SPINEL_RESET_BOOTLOADER`.
# *
# * Defaults to stack reset if unspecified.
# *
# * If an error occurs, the value of `PROP_LAST_STATUS` will be emitted
# * instead with the value set to the generated status code for the error.
# */
SPINEL_CMD_RESET = 1
#
# * Get property value command (Host -> NCP)
# *
# * Encoding: `i`
# * `i` : Property Id
# *
# * Causes the NCP to emit a `CMD_PROP_VALUE_IS` command for the
# * given property identifier.
# *
# * The payload for this command is the property identifier encoded
# * in the packed unsigned integer format `i`.
# *
# * If an error occurs, the value of `PROP_LAST_STATUS` will be emitted
# * instead with the value set to the generated status code for the error.
# */
SPINEL_CMD_PROP_VALUE_GET = 2
#
# * Set property value command (Host -> NCP)
# *
# * Encoding: `iD`
# * `i` : Property Id
# * `D` : Value (encoding depends on the property)
# *
# * Instructs the NCP to set the given property to the specific given
# * value, replacing any previous value.
# *
# * The payload for this command is the property identifier encoded in the
# * packed unsigned integer format, followed by the property value. The
# * exact format of the property value is defined by the property.
# *
# * On success a `CMD_PROP_VALUE_IS` command is emitted either for the
# * given property identifier with the set value, or for `PROP_LAST_STATUS`
# * with value `LAST_STATUS_OK`.
# *
# * If an error occurs, the value of `PROP_LAST_STATUS` will be emitted
# * with the value set to the generated status code for the error.
# */
SPINEL_CMD_PROP_VALUE_SET = 3
#
# * Insert value into property command (Host -> NCP)
# *
# * Encoding: `iD`
# * `i` : Property Id
# * `D` : Value (encoding depends on the property)
# *
# * Instructs the NCP to insert the given value into a list-oriented
# * property without removing other items in the list. The resulting order
# * of items in the list is defined by the individual property being
# * operated on.
# *
# * The payload for this command is the property identifier encoded in the
# * packed unsigned integer format, followed by the value to be inserted.
# * The exact format of the value is defined by the property.
# *
# * If the type signature of the property consists of a single structure
# * enclosed by an array `A(t(...))`, then the contents of value MUST
# * contain the contents of the structure (`...`) rather than the
# * serialization of the whole item (`t(...)`). Specifically, the length
# * of the structure MUST NOT be prepended to value. This helps to
# * eliminate redundant data.
# *
# * On success, either a `CMD_PROP_VALUE_INSERTED` command is emitted for
# * the given property, or a `CMD_PROP_VALUE_IS` command is emitted of
# * property `PROP_LAST_STATUS` with value `LAST_STATUS_OK`.
# *
# * If an error occurs, the value of `PROP_LAST_STATUS` will be emitted
# * with the value set to the generated status code for the error.
# */
SPINEL_CMD_PROP_VALUE_INSERT = 4
#
# * Remove value from property command (Host -> NCP)
# *
# * Encoding: `iD`
# * `i` : Property Id
# * `D` : Value (encoding depends on the property)
#
# * Instructs the NCP to remove the given value from a list-oriented property,
# * without affecting other items in the list. The resulting order of items
# * in the list is defined by the individual property being operated on.
# *
# * Note that this command operates by value, not by index!
# *
# * The payload for this command is the property identifier encoded in the
# * packed unsigned integer format, followed by the value to be removed. The
# * exact format of the value is defined by the property.
# *
# * If the type signature of the property consists of a single structure
# * enclosed by an array `A(t(...))`, then the contents of value MUST contain
# * the contents of the structure (`...`) rather than the serialization of the
# * whole item (`t(...)`). Specifically, the length of the structure MUST NOT
# * be prepended to `VALUE`. This helps to eliminate redundant data.
# *
# * On success, either a `CMD_PROP_VALUE_REMOVED` command is emitted for the
# * given property, or a `CMD_PROP_VALUE_IS` command is emitted of property
# * `PROP_LAST_STATUS` with value `LAST_STATUS_OK`.
# *
# * If an error occurs, the value of `PROP_LAST_STATUS` will be emitted
# * with the value set to the generated status code for the error.
# */
SPINEL_CMD_PROP_VALUE_REMOVE = 5
#
# * Property value notification command (NCP -> Host)
# *
# * Encoding: `iD`
# * `i` : Property Id
# * `D` : Value (encoding depends on the property)
# *
# * This command can be sent by the NCP in response to a previous command
# * from the host, or it can be sent by the NCP in an unsolicited fashion
# * to notify the host of various state changes asynchronously.
# *
# * The payload for this command is the property identifier encoded in the
# * packed unsigned integer format, followed by the current value of the
# * given property.
# */
SPINEL_CMD_PROP_VALUE_IS = 6
#
# * Property value insertion notification command (NCP -> Host)
# *
# * Encoding:`iD`
# * `i` : Property Id
# * `D` : Value (encoding depends on the property)
# *
# * This command can be sent by the NCP in response to the
# * `CMD_PROP_VALUE_INSERT` command, or it can be sent by the NCP in an
# * unsolicited fashion to notify the host of various state changes
# * asynchronously.
# *
# * The payload for this command is the property identifier encoded in the
# * packed unsigned integer format, followed by the value that was inserted
# * into the given property.
# *
# * If the type signature of the property specified by property id consists
# * of a single structure enclosed by an array (`A(t(...))`), then the
# * contents of value MUST contain the contents of the structure (`...`)
# * rather than the serialization of the whole item (`t(...)`). Specifically,
# * the length of the structure MUST NOT be prepended to `VALUE`. This
# * helps to eliminate redundant data.
# *
# * The resulting order of items in the list is defined by the given
# * property.
# */
SPINEL_CMD_PROP_VALUE_INSERTED = 7
#
# * Property value removal notification command (NCP -> Host)
# *
# * Encoding: `iD`
# * `i` : Property Id
# * `D` : Value (encoding depends on the property)
# *
# * This command can be sent by the NCP in response to the
# * `CMD_PROP_VALUE_REMOVE` command, or it can be sent by the NCP in an
# * unsolicited fashion to notify the host of various state changes
# * asynchronously.
# *
# * Note that this command operates by value, not by index!
# *
# * The payload for this command is the property identifier encoded in the
# * packed unsigned integer format described in followed by the value that
# * was removed from the given property.
# *
# * If the type signature of the property specified by property id consists
# * of a single structure enclosed by an array (`A(t(...))`), then the
# * contents of value MUST contain the contents of the structure (`...`)
# * rather than the serialization of the whole item (`t(...)`). Specifically,
# * the length of the structure MUST NOT be prepended to `VALUE`. This
# * helps to eliminate redundant data.
# *
# * The resulting order of items in the list is defined by the given
# * property.
# */
SPINEL_CMD_PROP_VALUE_REMOVED = 8
#
# * Property value removal notification command (NCP -> Host)
# *
# * Encoding: `iD`
# * `i` : Property Id
# * `D` : Value (encoding depends on the property)
# *
# * This command can be sent by the NCP in response to the
# * `CMD_PROP_VALUE_REMOVE` command, or it can be sent by the NCP in an
# * unsolicited fashion to notify the host of various state changes
# * asynchronously.
# *
# * Note that this command operates by value, not by index!
# *
# * The payload for this command is the property identifier encoded in the
# * packed unsigned integer format described in followed by the value that
# * was removed from the given property.
# *
# * If the type signature of the property specified by property id consists
# * of a single structure enclosed by an array (`A(t(...))`), then the
# * contents of value MUST contain the contents of the structure (`...`)
# * rather than the serialization of the whole item (`t(...)`). Specifically,
# * the length of the structure MUST NOT be prepended to `VALUE`. This
# * helps to eliminate redundant data.
# *
# * The resulting order of items in the list is defined by the given
# * property.
# */
SPINEL_CMD_NET_SAVE = 9
#
# * Clear saved network settings command (Host -> NCP)
# *
# * Encoding: Empty
# *
# * Erases all network credentials and state from non-volatile memory.
# *
# * This operation affects non-volatile memory only. The current network
# * information stored in volatile memory is unaffected.
# *
# * The response to this command is always a `CMD_PROP_VALUE_IS` for
# * `PROP_LAST_STATUS`, indicating the result of the operation.
# */
SPINEL_CMD_NET_CLEAR = 10
#
# * Clear saved network settings command (Host -> NCP)
# *
# * Encoding: Empty
# *
# * Erases all network credentials and state from non-volatile memory.
# *
# * This operation affects non-volatile memory only. The current network
# * information stored in volatile memory is unaffected.
# *
# * The response to this command is always a `CMD_PROP_VALUE_IS` for
# * `PROP_LAST_STATUS`, indicating the result of the operation.
# */
SPINEL_CMD_NET_RECALL = 11
#
# * Host buffer offload is an optional NCP capability that, when
# * present, allows the NCP to store data buffers on the host processor
# * that can be recalled at a later time.
# *
# * The presence of this feature can be detected by the host by
# * checking for the presence of the `CAP_HBO`
# * capability in `PROP_CAPS`.
# *
# * This feature is not currently supported on OpenThread.
# */
SPINEL_CMD_HBO_OFFLOAD = 12
#
# * Host buffer offload is an optional NCP capability that, when
# * present, allows the NCP to store data buffers on the host processor
# * that can be recalled at a later time.
# *
# * The presence of this feature can be detected by the host by
# * checking for the presence of the `CAP_HBO`
# * capability in `PROP_CAPS`.
# *
# * This feature is not currently supported on OpenThread.
# */
SPINEL_CMD_HBO_RECLAIM = 13
#
# * Host buffer offload is an optional NCP capability that, when
# * present, allows the NCP to store data buffers on the host processor
# * that can be recalled at a later time.
# *
# * The presence of this feature can be detected by the host by
# * checking for the presence of the `CAP_HBO`
# * capability in `PROP_CAPS`.
# *
# * This feature is not currently supported on OpenThread.
# */
SPINEL_CMD_HBO_DROP = 14
#
# * Host buffer offload is an optional NCP capability that, when
# * present, allows the NCP to store data buffers on the host processor
# * that can be recalled at a later time.
# *
# * The presence of this feature can be detected by the host by
# * checking for the presence of the `CAP_HBO`
# * capability in `PROP_CAPS`.
# *
# * This feature is not currently supported on OpenThread.
# */
SPINEL_CMD_HBO_OFFLOADED = 15
#
# * Host buffer offload is an optional NCP capability that, when
# * present, allows the NCP to store data buffers on the host processor
# * that can be recalled at a later time.
# *
# * The presence of this feature can be detected by the host by
# * checking for the presence of the `CAP_HBO`
# * capability in `PROP_CAPS`.
# *
# * This feature is not currently supported on OpenThread.
# */
SPINEL_CMD_HBO_RECLAIMED = 16
#
# * Host buffer offload is an optional NCP capability that, when
# * present, allows the NCP to store data buffers on the host processor
# * that can be recalled at a later time.
# *
# * The presence of this feature can be detected by the host by
# * checking for the presence of the `CAP_HBO`
# * capability in `PROP_CAPS`.
# *
# * This feature is not currently supported on OpenThread.
# */
SPINEL_CMD_HBO_DROPPED = 17
#
# * Peek command (Host -> NCP)
# *
# * Encoding: `LU`
# * `L` : The address to peek
# * `U` : Number of bytes to read
# *
# * This command allows the NCP to fetch values from the RAM of the NCP
# * for debugging purposes. Upon success, `CMD_PEEK_RET` is sent from the
# * NCP to the host. Upon failure, `PROP_LAST_STATUS` is emitted with
# * the appropriate error indication.
# *
# * The NCP MAY prevent certain regions of memory from being accessed.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_PEEK = 18
#
# * Peek return command (NCP -> Host)
# *
# * Encoding: `LUD`
# * `L` : The address peeked
# * `U` : Number of bytes read
# * `D` : Memory content
# *
# * This command contains the contents of memory that was requested by
# * a previous call to `CMD_PEEK`.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_PEEK_RET = 19
#
# * Poke command (Host -> NCP)
# *
# * Encoding: `LUD`
# * `L` : The address to be poked
# * `U` : Number of bytes to write
# * `D` : Content to write
# *
# * This command writes the bytes to the specified memory address
# * for debugging purposes.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_POKE = 20
#
# * Poke command (Host -> NCP)
# *
# * Encoding: `LUD`
# * `L` : The address to be poked
# * `U` : Number of bytes to write
# * `D` : Content to write
# *
# * This command writes the bytes to the specified memory address
# * for debugging purposes.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_PROP_VALUE_MULTI_GET = 21
#
# * Poke command (Host -> NCP)
# *
# * Encoding: `LUD`
# * `L` : The address to be poked
# * `U` : Number of bytes to write
# * `D` : Content to write
# *
# * This command writes the bytes to the specified memory address
# * for debugging purposes.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_PROP_VALUE_MULTI_SET = 22
#
# * Poke command (Host -> NCP)
# *
# * Encoding: `LUD`
# * `L` : The address to be poked
# * `U` : Number of bytes to write
# * `D` : Content to write
# *
# * This command writes the bytes to the specified memory address
# * for debugging purposes.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_PROP_VALUES_ARE = 23
#
# * Poke command (Host -> NCP)
# *
# * Encoding: `LUD`
# * `L` : The address to be poked
# * `U` : Number of bytes to write
# * `D` : Content to write
# *
# * This command writes the bytes to the specified memory address
# * for debugging purposes.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_NEST__BEGIN = 15296
#
# * Poke command (Host -> NCP)
# *
# * Encoding: `LUD`
# * `L` : The address to be poked
# * `U` : Number of bytes to write
# * `D` : Content to write
# *
# * This command writes the bytes to the specified memory address
# * for debugging purposes.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_NEST__END = 15360
#
# * Poke command (Host -> NCP)
# *
# * Encoding: `LUD`
# * `L` : The address to be poked
# * `U` : Number of bytes to write
# * `D` : Content to write
# *
# * This command writes the bytes to the specified memory address
# * for debugging purposes.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_VENDOR__BEGIN = 15360
#
# * Poke command (Host -> NCP)
# *
# * Encoding: `LUD`
# * `L` : The address to be poked
# * `U` : Number of bytes to write
# * `D` : Content to write
# *
# * This command writes the bytes to the specified memory address
# * for debugging purposes.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_VENDOR__END = 16384
#
# * Poke command (Host -> NCP)
# *
# * Encoding: `LUD`
# * `L` : The address to be poked
# * `U` : Number of bytes to write
# * `D` : Content to write
# *
# * This command writes the bytes to the specified memory address
# * for debugging purposes.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_EXPERIMENTAL__BEGIN = 2000000
#
# * Poke command (Host -> NCP)
# *
# * Encoding: `LUD`
# * `L` : The address to be poked
# * `U` : Number of bytes to write
# * `D` : Content to write
# *
# * This command writes the bytes to the specified memory address
# * for debugging purposes.
# *
# * This command requires the capability `CAP_PEEK_POKE` to be present.
# */
SPINEL_CMD_EXPERIMENTAL__END = 2097152
class spinel_capability_t(Enum):
SPINEL_CAP_LOCK = 1
SPINEL_CAP_NET_SAVE = 2
SPINEL_CAP_HBO = 3
SPINEL_CAP_POWER_SAVE = 4
SPINEL_CAP_COUNTERS = 5
SPINEL_CAP_JAM_DETECT = 6
SPINEL_CAP_PEEK_POKE = 7
SPINEL_CAP_WRITABLE_RAW_STREAM = 8
SPINEL_CAP_GPIO = 9
SPINEL_CAP_TRNG = 10
SPINEL_CAP_CMD_MULTI = 11
SPINEL_CAP_UNSOL_UPDATE_FILTER = 12
SPINEL_CAP_MCU_POWER_STATE = 13
SPINEL_CAP_PCAP = 14
SPINEL_CAP_802_15_4__BEGIN = 16
SPINEL_CAP_802_15_4_2003 = 16
SPINEL_CAP_802_15_4_2006 = 17
SPINEL_CAP_802_15_4_2011 = 18
SPINEL_CAP_802_15_4_PIB = 21
SPINEL_CAP_802_15_4_2450MHZ_OQPSK = 24
SPINEL_CAP_802_15_4_915MHZ_OQPSK = 25
SPINEL_CAP_802_15_4_868MHZ_OQPSK = 26
SPINEL_CAP_802_15_4_915MHZ_BPSK = 27
SPINEL_CAP_802_15_4_868MHZ_BPSK = 28
SPINEL_CAP_802_15_4_915MHZ_ASK = 29
SPINEL_CAP_802_15_4_868MHZ_ASK = 30
SPINEL_CAP_802_15_4__END = 32
SPINEL_CAP_CONFIG__BEGIN = 32
SPINEL_CAP_CONFIG_FTD = 32
SPINEL_CAP_CONFIG_MTD = 33
SPINEL_CAP_CONFIG_RADIO = 34
SPINEL_CAP_CONFIG__END = 40
SPINEL_CAP_ROLE__BEGIN = 48
SPINEL_CAP_ROLE_ROUTER = 48
SPINEL_CAP_ROLE_SLEEPY = 49
SPINEL_CAP_ROLE__END = 52
SPINEL_CAP_NET__BEGIN = 52
SPINEL_CAP_NET_THREAD_1_0 = 52
SPINEL_CAP_NET_THREAD_1_1 = 53
SPINEL_CAP_NET_THREAD_1_2 = 54
SPINEL_CAP_NET__END = 64
SPINEL_CAP_RCP__BEGIN = 64
SPINEL_CAP_RCP_API_VERSION = 64
SPINEL_CAP_RCP_MIN_HOST_API_VERSION = 65
SPINEL_CAP_RCP_RESET_TO_BOOTLOADER = 66
SPINEL_CAP_RCP_LOG_CRASH_DUMP = 67
SPINEL_CAP_RCP__END = 80
SPINEL_CAP_OPENTHREAD__BEGIN = 512
SPINEL_CAP_MAC_ALLOWLIST = 512
SPINEL_CAP_MAC_RAW = 513
SPINEL_CAP_OOB_STEERING_DATA = 514
SPINEL_CAP_CHANNEL_MONITOR = 515
SPINEL_CAP_ERROR_RATE_TRACKING = 516
SPINEL_CAP_CHANNEL_MANAGER = 517
SPINEL_CAP_OPENTHREAD_LOG_METADATA = 518
SPINEL_CAP_TIME_SYNC = 519
SPINEL_CAP_CHILD_SUPERVISION = 520
SPINEL_CAP_POSIX = 521
SPINEL_CAP_SLAAC = 522
SPINEL_CAP_RADIO_COEX = 523
SPINEL_CAP_MAC_RETRY_HISTOGRAM = 524
SPINEL_CAP_MULTI_RADIO = 525
SPINEL_CAP_SRP_CLIENT = 526
SPINEL_CAP_DUA = 527
SPINEL_CAP_REFERENCE_DEVICE = 528
SPINEL_CAP_OPENTHREAD__END = 640
SPINEL_CAP_THREAD__BEGIN = 1024
SPINEL_CAP_THREAD_COMMISSIONER = 1024
SPINEL_CAP_THREAD_TMF_PROXY = 1025
SPINEL_CAP_THREAD_UDP_FORWARD = 1026
SPINEL_CAP_THREAD_JOINER = 1027
SPINEL_CAP_THREAD_BORDER_ROUTER = 1028
SPINEL_CAP_THREAD_SERVICE = 1029
SPINEL_CAP_THREAD_CSL_RECEIVER = 1030
SPINEL_CAP_THREAD_LINK_METRICS = 1031
SPINEL_CAP_THREAD_BACKBONE_ROUTER = 1032
SPINEL_CAP_THREAD__END = 1152
SPINEL_CAP_NEST__BEGIN = 15296
#< deprecated
SPINEL_CAP_NEST_LEGACY_INTERFACE = 15296
#< deprecated
SPINEL_CAP_NEST_LEGACY_NET_WAKE = 15297
SPINEL_CAP_NEST_TRANSMIT_HOOK = 15298
SPINEL_CAP_NEST__END = 15360
SPINEL_CAP_VENDOR__BEGIN = 15360
SPINEL_CAP_VENDOR__END = 16384
SPINEL_CAP_EXPERIMENTAL__BEGIN = 2000000
SPINEL_CAP_EXPERIMENTAL__END = 2097152
class spinel_prop_key_t(Enum):
# Last Operation Status
# /** Format: `i` - Read-only
# *
# * Describes the status of the last operation. Encoded as a packed
# * unsigned integer (see `SPINEL_STATUS_*` for list of values).
# *
# * This property is emitted often to indicate the result status of
# * pretty much any Host-to-NCP operation.
# *
# * It is emitted automatically at NCP startup with a value indicating
# * the reset reason. It is also emitted asynchronously on an error (
# * e.g., NCP running out of buffer).
# */
SPINEL_PROP_LAST_STATUS = 0
# Protocol Version
# /** Format: `ii` - Read-only
# *
# * Describes the protocol version information. This property contains
# * two fields, each encoded as a packed unsigned integer:
# * `i`: Major Version Number
# * `i`: Minor Version Number
# *
# * The version number is defined by `SPINEL_PROTOCOL_VERSION_THREAD_MAJOR`
# * and `SPINEL_PROTOCOL_VERSION_THREAD_MINOR`.
# *
# * This specification describes major version 4, minor version 3.
# */
SPINEL_PROP_PROTOCOL_VERSION = 1
# NCP Version
# /** Format: `U` - Read-only
# *
# * Contains a string which describes the firmware currently running on
# * the NCP. Encoded as a zero-terminated UTF-8 string.
# */
SPINEL_PROP_NCP_VERSION = 2
# NCP Network Protocol Type
# /** Format: 'i' - Read-only
# *
# * This value identifies what the network protocol for this NCP.
# * The valid protocol type values are defined by enumeration
# * `SPINEL_PROTOCOL_TYPE_*`:
# *
# * `SPINEL_PROTOCOL_TYPE_BOOTLOADER` = 0
# * `SPINEL_PROTOCOL_TYPE_ZIGBEE_IP` = 2,
# * `SPINEL_PROTOCOL_TYPE_THREAD` = 3,
# *
# * OpenThread NCP supports only `SPINEL_PROTOCOL_TYPE_THREAD`
# */
SPINEL_PROP_INTERFACE_TYPE = 3
# NCP Vendor ID
# /** Format: 'i` - Read-only
# *
# * Vendor ID. Zero for unknown.
# */
SPINEL_PROP_VENDOR_ID = 4
# NCP Capability List
# /** Format: 'A(i)` - Read-only
# *
# * Describes the supported capabilities of this NCP. Encoded as a list of
# * packed unsigned integers.
# *
# * The capability values are specified by SPINEL_CAP_* enumeration.
# */
SPINEL_PROP_CAPS = 5
# NCP Interface Count
# /** Format: 'C` - Read-only
# *
# * Provides number of interfaces.
# */
SPINEL_PROP_INTERFACE_COUNT = 6
#< PowerState [C] (deprecated, use `MCU_POWER_STATE` instead).
SPINEL_PROP_POWER_STATE = 7
# NCP Hardware Address
# /** Format: 'E` - Read-only
# *
# * The static EUI64 address of the device, used as a serial number.
# */
SPINEL_PROP_HWADDR = 8
#< PropLock [b] (not supported)
SPINEL_PROP_LOCK = 9
#< Max offload mem [S] (not supported)
SPINEL_PROP_HBO_MEM_MAX = 10
#< Max offload block [S] (not supported)
SPINEL_PROP_HBO_BLOCK_MAX = 11
# Host Power State
# /** Format: 'C`
# *
# * Describes the current power state of the host. This property is used
# * by the host to inform the NCP when it has changed power states. The
# * NCP can then use this state to determine which properties need
# * asynchronous updates. Enumeration `spinel_host_power_state_t` defines
# * the valid values (`SPINEL_HOST_POWER_STATE_*`):
# *
# * `HOST_POWER_STATE_OFFLINE`: Host is physically powered off and
# * cannot be woken by the NCP. All asynchronous commands are
# * squelched.
# *
# * `HOST_POWER_STATE_DEEP_SLEEP`: The host is in a low power state
# * where it can be woken by the NCP but will potentially require more
# * than two seconds to become fully responsive. The NCP MUST
# * avoid sending unnecessary property updates, such as child table
# * updates or non-critical messages on the debug stream. If the NCP
# * needs to wake the host for traffic, the NCP MUST first take
# * action to wake the host. Once the NCP signals to the host that it
# * should wake up, the NCP MUST wait for some activity from the
# * host (indicating that it is fully awake) before sending frames.
# *
# * `HOST_POWER_STATE_RESERVED`: This value MUST NOT be set by the host. If
# * received by the NCP, the NCP SHOULD consider this as a synonym
# * of `HOST_POWER_STATE_DEEP_SLEEP`.
# *
# * `HOST_POWER_STATE_LOW_POWER`: The host is in a low power state
# * where it can be immediately woken by the NCP. The NCP SHOULD
# * avoid sending unnecessary property updates, such as child table
# * updates or non-critical messages on the debug stream.
# *
# * `HOST_POWER_STATE_ONLINE`: The host is awake and responsive. No
# * special filtering is performed by the NCP on asynchronous updates.
# *
# * All other values are RESERVED. They MUST NOT be set by the
# * host. If received by the NCP, the NCP SHOULD consider the value as
# * a synonym of `HOST_POWER_STATE_LOW_POWER`.
# *
# * After setting this power state, any further commands from the host to
# * the NCP will cause `HOST_POWER_STATE` to automatically revert to
# * `HOST_POWER_STATE_ONLINE`.
# *
# * When the host is entering a low-power state, it should wait for the
# * response from the NCP acknowledging the command (with `CMD_VALUE_IS`).
# * Once that acknowledgment is received the host may enter the low-power
# * state.
# *
# * If the NCP has the `CAP_UNSOL_UPDATE_FILTER` capability, any unsolicited
# * property updates masked by `PROP_UNSOL_UPDATE_FILTER` should be honored
# * while the host indicates it is in a low-power state. After resuming to the
# * `HOST_POWER_STATE_ONLINE` state, the value of `PROP_UNSOL_UPDATE_FILTER`
# * MUST be unchanged from the value assigned prior to the host indicating
# * it was entering a low-power state.
# */
SPINEL_PROP_HOST_POWER_STATE = 12
# NCP's MCU Power State
# /** Format: 'C`
# * Required capability: CAP_MCU_POWER_SAVE
# *
# * This property specifies the desired power state of NCP's micro-controller
# * (MCU) when the underlying platform's operating system enters idle mode (i.e.,
# * all active tasks/events are processed and the MCU can potentially enter a
# * energy-saving power state).
# *
# * The power state primarily determines how the host should interact with the NCP
# * and whether the host needs an external trigger (a "poke") to NCP before it can
# * communicate with the NCP or not. After a reset, the MCU power state MUST be
# * SPINEL_MCU_POWER_STATE_ON.
# *
# * Enumeration `spinel_mcu_power_state_t` defines the valid values
# * (`SPINEL_MCU_POWER_STATE_*` constants):
# *
# * `SPINEL_MCU_POWER_STATE_ON`: NCP's MCU stays on and active all the time.
# * When the NCP's desired power state is set to this value, host can send
# * messages to NCP without requiring any "poke" or external triggers. MCU is
# * expected to stay on and active. Note that the `ON` power state only
# * determines the MCU's power mode and is not related to radio's state.
# *
# * `SPINEL_MCU_POWER_STATE_LOW_POWER`: NCP's MCU can enter low-power
# * (energy-saving) state. When the NCP's desired power state is set to
# * `LOW_POWER`, host is expected to "poke" the NCP (e.g., an external trigger
# * like an interrupt) before it can communicate with the NCP (send a message
# * to the NCP). The "poke" mechanism is determined by the platform code (based
# * on NCP's interface to the host).
# * While power state is set to `LOW_POWER`, NCP can still (at any time) send
# * messages to host. Note that receiving a message from the NCP does NOT
# * indicate that the NCP's power state has changed, i.e., host is expected to
# * continue to "poke" NCP when it wants to talk to the NCP until the power
# * state is explicitly changed (by setting this property to `ON`).
# * Note that the `LOW_POWER` power state only determines the MCU's power mode
# * and is not related to radio's state.
# *
# * `SPINEL_MCU_POWER_STATE_OFF`: NCP is fully powered off.
# * An NCP hardware reset (via a RESET pin) is required to bring the NCP back
# * to `SPINEL_MCU_POWER_STATE_ON`. RAM is not retained after reset.
# */
SPINEL_PROP_MCU_POWER_STATE = 13
# NCP's MCU Power State
# /** Format: 'C`
# * Required capability: CAP_MCU_POWER_SAVE
# *
# * This property specifies the desired power state of NCP's micro-controller
# * (MCU) when the underlying platform's operating system enters idle mode (i.e.,
# * all active tasks/events are processed and the MCU can potentially enter a
# * energy-saving power state).
# *
# * The power state primarily determines how the host should interact with the NCP
# * and whether the host needs an external trigger (a "poke") to NCP before it can
# * communicate with the NCP or not. After a reset, the MCU power state MUST be
# * SPINEL_MCU_POWER_STATE_ON.
# *
# * Enumeration `spinel_mcu_power_state_t` defines the valid values
# * (`SPINEL_MCU_POWER_STATE_*` constants):
# *
# * `SPINEL_MCU_POWER_STATE_ON`: NCP's MCU stays on and active all the time.
# * When the NCP's desired power state is set to this value, host can send
# * messages to NCP without requiring any "poke" or external triggers. MCU is
# * expected to stay on and active. Note that the `ON` power state only
# * determines the MCU's power mode and is not related to radio's state.
# *
# * `SPINEL_MCU_POWER_STATE_LOW_POWER`: NCP's MCU can enter low-power
# * (energy-saving) state. When the NCP's desired power state is set to
# * `LOW_POWER`, host is expected to "poke" the NCP (e.g., an external trigger
# * like an interrupt) before it can communicate with the NCP (send a message
# * to the NCP). The "poke" mechanism is determined by the platform code (based
# * on NCP's interface to the host).
# * While power state is set to `LOW_POWER`, NCP can still (at any time) send
# * messages to host. Note that receiving a message from the NCP does NOT
# * indicate that the NCP's power state has changed, i.e., host is expected to
# * continue to "poke" NCP when it wants to talk to the NCP until the power
# * state is explicitly changed (by setting this property to `ON`).
# * Note that the `LOW_POWER` power state only determines the MCU's power mode
# * and is not related to radio's state.
# *
# * `SPINEL_MCU_POWER_STATE_OFF`: NCP is fully powered off.
# * An NCP hardware reset (via a RESET pin) is required to bring the NCP back
# * to `SPINEL_MCU_POWER_STATE_ON`. RAM is not retained after reset.
# */
SPINEL_PROP_BASE_EXT__BEGIN = 4096
# GPIO Configuration
# /** Format: `A(CCU)`
# * Type: Read-Only (Optionally Read-write using `CMD_PROP_VALUE_INSERT`)
# *
# * An array of structures which contain the following fields:
# *
# * * `C`: GPIO Number
# * * `C`: GPIO Configuration Flags
# * * `U`: Human-readable GPIO name
# *
# * GPIOs which do not have a corresponding entry are not supported.
# *
# * The configuration parameter contains the configuration flags for the
# * GPIO:
# *
# * 0 1 2 3 4 5 6 7
# * +---+---+---+---+---+---+---+---+
# * |DIR|PUP|PDN|TRIGGER| RESERVED |
# * +---+---+---+---+---+---+---+---+
# * |O/D|
# * +---+
# *
# * * `DIR`: Pin direction. Clear (0) for input, set (1) for output.
# * * `PUP`: Pull-up enabled flag.
# * * `PDN`/`O/D`: Flag meaning depends on pin direction:
# * * Input: Pull-down enabled.
# * * Output: Output is an open-drain.
# * * `TRIGGER`: Enumeration describing how pin changes generate
# * asynchronous notification commands (TBD) from the NCP to the host.
# * * 0: Feature disabled for this pin
# * * 1: Trigger on falling edge
# * * 2: Trigger on rising edge
# * * 3: Trigger on level change
# * * `RESERVED`: Bits reserved for future use. Always cleared to zero
# * and ignored when read.
# *
# * As an optional feature, the configuration of individual pins may be
# * modified using the `CMD_PROP_VALUE_INSERT` command. Only the GPIO
# * number and flags fields MUST be present, the GPIO name (if present)
# * would be ignored. This command can only be used to modify the
# * configuration of GPIOs which are already exposed---it cannot be used
# * by the host to add additional GPIOs.
# */
SPINEL_PROP_GPIO_CONFIG = 4096
# GPIO State Bitmask
# /** Format: `D`
# * Type: Read-Write
# *
# * Contains a bit field identifying the state of the GPIOs. The length of
# * the data associated with these properties depends on the number of
# * GPIOs. If you have 10 GPIOs, you'd have two bytes. GPIOs are numbered
# * from most significant bit to least significant bit, so 0x80 is GPIO 0,
# * 0x40 is GPIO 1, etc.
# *
# * For GPIOs configured as inputs:
# *
# * * `CMD_PROP_VALUE_GET`: The value of the associated bit describes the
# * logic level read from the pin.
# * * `CMD_PROP_VALUE_SET`: The value of the associated bit is ignored
# * for these pins.
# *
# * For GPIOs configured as outputs:
# *
# * * `CMD_PROP_VALUE_GET`: The value of the associated bit is
# * implementation specific.
# * * `CMD_PROP_VALUE_SET`: The value of the associated bit determines
# * the new logic level of the output. If this pin is configured as an
# * open-drain, setting the associated bit to 1 will cause the pin to
# * enter a Hi-Z state.
# *
# * For GPIOs which are not specified in `PROP_GPIO_CONFIG`:
# *
# * * `CMD_PROP_VALUE_GET`: The value of the associated bit is
# * implementation specific.
# * * `CMD_PROP_VALUE_SET`: The value of the associated bit MUST be
# * ignored by the NCP.
# *
# * When writing, unspecified bits are assumed to be zero.
# */
SPINEL_PROP_GPIO_STATE = 4098
# GPIO State Set-Only Bitmask
# /** Format: `D`
# * Type: Write-Only
# *
# * Allows for the state of various output GPIOs to be set without affecting
# * other GPIO states. Contains a bit field identifying the output GPIOs that
# * should have their state set to 1.
# *
# * When writing, unspecified bits are assumed to be zero. The value of
# * any bits for GPIOs which are not specified in `PROP_GPIO_CONFIG` MUST
# * be ignored.
# */
SPINEL_PROP_GPIO_STATE_SET = 4099
# GPIO State Clear-Only Bitmask
# /** Format: `D`
# * Type: Write-Only
# *
# * Allows for the state of various output GPIOs to be cleared without affecting
# * other GPIO states. Contains a bit field identifying the output GPIOs that
# * should have their state cleared to 0.
# *
# * When writing, unspecified bits are assumed to be zero. The value of
# * any bits for GPIOs which are not specified in `PROP_GPIO_CONFIG` MUST
# * be ignored.
# */
SPINEL_PROP_GPIO_STATE_CLEAR = 4100
# 32-bit random number from TRNG, ready-to-use.
SPINEL_PROP_TRNG_32 = 4101
# 16 random bytes from TRNG, ready-to-use.
SPINEL_PROP_TRNG_128 = 4102
# Raw samples from TRNG entropy source representing 32 bits of entropy.
SPINEL_PROP_TRNG_RAW_32 = 4103
# NCP Unsolicited update filter
# /** Format: `A(I)`
# * Type: Read-Write (optional Insert-Remove)
# * Required capability: `CAP_UNSOL_UPDATE_FILTER`
# *
# * Contains a list of properties which are excluded from generating
# * unsolicited value updates. This property is empty after reset.
# * In other words, the host may opt-out of unsolicited property updates
# * for a specific property by adding that property id to this list.
# * Hosts SHOULD NOT add properties to this list which are not
# * present in `PROP_UNSOL_UPDATE_LIST`. If such properties are added,
# * the NCP ignores the unsupported properties.
# */
SPINEL_PROP_UNSOL_UPDATE_FILTER = 4104
# List of properties capable of generating unsolicited value update.
# /** Format: `A(I)`
# * Type: Read-Only
# * Required capability: `CAP_UNSOL_UPDATE_FILTER`
# *
# * Contains a list of properties which are capable of generating
# * unsolicited value updates. This list can be used when populating
# * `PROP_UNSOL_UPDATE_FILTER` to disable all unsolicited property
# * updates.
# *
# * This property is intended to effectively behave as a constant
# * for a given NCP firmware.
# */
SPINEL_PROP_UNSOL_UPDATE_LIST = 4105
# List of properties capable of generating unsolicited value update.
# /** Format: `A(I)`
# * Type: Read-Only
# * Required capability: `CAP_UNSOL_UPDATE_FILTER`
# *
# * Contains a list of properties which are capable of generating
# * unsolicited value updates. This list can be used when populating
# * `PROP_UNSOL_UPDATE_FILTER` to disable all unsolicited property
# * updates.
# *
# * This property is intended to effectively behave as a constant
# * for a given NCP firmware.
# */
SPINEL_PROP_BASE_EXT__END = 4352
# List of properties capable of generating unsolicited value update.
# /** Format: `A(I)`
# * Type: Read-Only
# * Required capability: `CAP_UNSOL_UPDATE_FILTER`
# *
# * Contains a list of properties which are capable of generating
# * unsolicited value updates. This list can be used when populating
# * `PROP_UNSOL_UPDATE_FILTER` to disable all unsolicited property
# * updates.
# *
# * This property is intended to effectively behave as a constant
# * for a given NCP firmware.
# */
SPINEL_PROP_PHY__BEGIN = 32
#< [b]
SPINEL_PROP_PHY_ENABLED = 32
#< [C]
SPINEL_PROP_PHY_CHAN = 33
#< [A(C)]
SPINEL_PROP_PHY_CHAN_SUPPORTED = 34
#< kHz [L]
SPINEL_PROP_PHY_FREQ = 35
#< dBm [c]
SPINEL_PROP_PHY_CCA_THRESHOLD = 36
#< [c]
SPINEL_PROP_PHY_TX_POWER = 37
#< dBm [c]
SPINEL_PROP_PHY_RSSI = 38
#< dBm [c]
SPINEL_PROP_PHY_RX_SENSITIVITY = 39
#< [b]
SPINEL_PROP_PHY_PCAP_ENABLED = 40
#< [A(C)]
SPINEL_PROP_PHY_CHAN_PREFERRED = 41
#< dBm [c]
SPINEL_PROP_PHY_FEM_LNA_GAIN = 42
# Signal the max power for a channel
# /** Format: `Cc`
# *
# * First byte is the channel then the max transmit power, write-only.
# */
SPINEL_PROP_PHY_CHAN_MAX_POWER = 43
# Region code
# /** Format: `S`
# *
# * The ascii representation of the ISO 3166 alpha-2 code.
# */
SPINEL_PROP_PHY_REGION_CODE = 44
# Calibrated Power Table
# /** Format: `A(Csd)` - Insert/Set
# *
# * The `Insert` command on the property inserts a calibration power entry to the calibrated power table.
# * The `Set` command on the property with empty payload clears the calibrated power table.
# *
# * Structure Parameters:
# * `C`: Channel.
# * `s`: Actual power in 0.01 dBm.
# * `d`: Raw power setting.
# */
SPINEL_PROP_PHY_CALIBRATED_POWER = 45
# Target power for a channel
# /** Format: `t(Cs)` - Write only
# *
# * Structure Parameters:
# * `C`: Channel.
# * `s`: Target power in 0.01 dBm.
# */
SPINEL_PROP_PHY_CHAN_TARGET_POWER = 46
# Target power for a channel
# /** Format: `t(Cs)` - Write only
# *
# * Structure Parameters:
# * `C`: Channel.
# * `s`: Target power in 0.01 dBm.
# */
SPINEL_PROP_PHY__END = 48
# Target power for a channel
# /** Format: `t(Cs)` - Write only
# *
# * Structure Parameters:
# * `C`: Channel.
# * `s`: Target power in 0.01 dBm.
# */
SPINEL_PROP_PHY_EXT__BEGIN = 4608
# Signal Jamming Detection Enable
# /** Format: `b`
# *
# * Indicates if jamming detection is enabled or disabled. Set to true
# * to enable jamming detection.
# */
SPINEL_PROP_JAM_DETECT_ENABLE = 4608
# Signal Jamming Detected Indicator
# /** Format: `b` (Read-Only)
# *
# * Set to true if radio jamming is detected. Set to false otherwise.
# *
# * When jamming detection is enabled, changes to the value of this
# * property are emitted asynchronously via `CMD_PROP_VALUE_IS`.
# */
SPINEL_PROP_JAM_DETECTED = 4609
# Jamming detection RSSI threshold
# /** Format: `c`
# * Units: dBm
# *
# * This parameter describes the threshold RSSI level (measured in
# * dBm) above which the jamming detection will consider the
# * channel blocked.
# */
SPINEL_PROP_JAM_DETECT_RSSI_THRESHOLD = 4610
# Jamming detection window size
# /** Format: `C`
# * Units: Seconds (1-63)
# *
# * This parameter describes the window period for signal jamming
# * detection.
# */
SPINEL_PROP_JAM_DETECT_WINDOW = 4611
# Jamming detection busy period
# /** Format: `C`
# * Units: Seconds (1-63)
# *
# * This parameter describes the number of aggregate seconds within
# * the detection window where the RSSI must be above
# * `PROP_JAM_DETECT_RSSI_THRESHOLD` to trigger detection.
# *
# * The behavior of the jamming detection feature when `PROP_JAM_DETECT_BUSY`
# * is larger than `PROP_JAM_DETECT_WINDOW` is undefined.
# */
SPINEL_PROP_JAM_DETECT_BUSY = 4612
# Jamming detection history bitmap (for debugging)
# /** Format: `X` (read-only)
# *
# * This value provides information about current state of jamming detection
# * module for monitoring/debugging purpose. It returns a 64-bit value where
# * each bit corresponds to one second interval starting with bit 0 for the
# * most recent interval and bit 63 for the oldest intervals (63 sec earlier).
# * The bit is set to 1 if the jamming detection module observed/detected
# * high signal level during the corresponding one second interval.
# */
SPINEL_PROP_JAM_DETECT_HISTORY_BITMAP = 4613
# Channel monitoring sample interval
# /** Format: `L` (read-only)
# * Units: Milliseconds
# *
# * Required capability: SPINEL_CAP_CHANNEL_MONITOR
# *
# * If channel monitoring is enabled and active, every sample interval, a
# * zero-duration Energy Scan is performed, collecting a single RSSI sample
# * per channel. The RSSI samples are compared with a pre-specified RSSI
# * threshold.
# */
SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_INTERVAL = 4614
# Channel monitoring RSSI threshold
# /** Format: `c` (read-only)
# * Units: dBm
# *
# * Required capability: SPINEL_CAP_CHANNEL_MONITOR
# *
# * This value specifies the threshold used by channel monitoring module.
# * Channel monitoring maintains the average rate of RSSI samples that
# * are above the threshold within (approximately) a pre-specified number
# * of samples (sample window).
# */
SPINEL_PROP_CHANNEL_MONITOR_RSSI_THRESHOLD = 4615
# Channel monitoring sample window
# /** Format: `L` (read-only)
# * Units: Number of samples
# *
# * Required capability: SPINEL_CAP_CHANNEL_MONITOR
# *
# * The averaging sample window length (in units of number of channel
# * samples) used by channel monitoring module. Channel monitoring will
# * sample all channels every sample interval. It maintains the average rate
# * of RSSI samples that are above the RSSI threshold within (approximately)
# * the sample window.
# */
SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_WINDOW = 4616
# Channel monitoring sample count
# /** Format: `L` (read-only)
# * Units: Number of samples
# *
# * Required capability: SPINEL_CAP_CHANNEL_MONITOR
# *
# * Total number of RSSI samples (per channel) taken by the channel
# * monitoring module since its start (since Thread network interface
# * was enabled).
# */
SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_COUNT = 4617
# Channel monitoring channel occupancy
# /** Format: `A(t(CU))` (read-only)
# *
# * Required capability: SPINEL_CAP_CHANNEL_MONITOR
# *
# * Data per item is:
# *
# * `C`: Channel
# * `U`: Channel occupancy indicator
# *
# * The channel occupancy value represents the average rate/percentage of
# * RSSI samples that were above RSSI threshold ("bad" RSSI samples) within
# * (approximately) sample window latest RSSI samples.
# *
# * Max value of `0xffff` indicates all RSSI samples were above RSSI
# * threshold (i.e. 100% of samples were "bad").
# */
SPINEL_PROP_CHANNEL_MONITOR_CHANNEL_OCCUPANCY = 4618
# Radio caps
# /** Format: `i` (read-only)
# *
# * Data per item is:
# *
# * `i`: Radio Capabilities.
# */
SPINEL_PROP_RADIO_CAPS = 4619
# All coex metrics related counters.
# /** Format: t(LLLLLLLL)t(LLLLLLLLL)bL (Read-only)
# *
# * Required capability: SPINEL_CAP_RADIO_COEX
# *
# * The contents include two structures and two common variables, first structure corresponds to
# * all transmit related coex counters, second structure provides the receive related counters.
# *
# * The transmit structure includes:
# * 'L': NumTxRequest (The number of tx requests).
# * 'L': NumTxGrantImmediate (The number of tx requests while grant was active).
# * 'L': NumTxGrantWait (The number of tx requests while grant was inactive).
# * 'L': NumTxGrantWaitActivated (The number of tx requests while grant was inactive that were
# * ultimately granted).
# * 'L': NumTxGrantWaitTimeout (The number of tx requests while grant was inactive that timed out).
# * 'L': NumTxGrantDeactivatedDuringRequest (The number of tx requests that were in progress when grant was
# * deactivated).
# * 'L': NumTxDelayedGrant (The number of tx requests that were not granted within 50us).
# * 'L': AvgTxRequestToGrantTime (The average time in usec from tx request to grant).
# *
# * The receive structure includes:
# * 'L': NumRxRequest (The number of rx requests).
# * 'L': NumRxGrantImmediate (The number of rx requests while grant was active).
# * 'L': NumRxGrantWait (The number of rx requests while grant was inactive).
# * 'L': NumRxGrantWaitActivated (The number of rx requests while grant was inactive that were
# * ultimately granted).
# * 'L': NumRxGrantWaitTimeout (The number of rx requests while grant was inactive that timed out).
# * 'L': NumRxGrantDeactivatedDuringRequest (The number of rx requests that were in progress when grant was
# * deactivated).
# * 'L': NumRxDelayedGrant (The number of rx requests that were not granted within 50us).
# * 'L': AvgRxRequestToGrantTime (The average time in usec from rx request to grant).
# * 'L': NumRxGrantNone (The number of rx requests that completed without receiving grant).
# *
# * Two common variables:
# * 'b': Stopped (Stats collection stopped due to saturation).
# * 'L': NumGrantGlitch (The number of of grant glitches).
# */
SPINEL_PROP_RADIO_COEX_METRICS = 4620
# Radio Coex Enable
# /** Format: `b`
# *
# * Required capability: SPINEL_CAP_RADIO_COEX
# *
# * Indicates if radio coex is enabled or disabled. Set to true to enable radio coex.
# */
SPINEL_PROP_RADIO_COEX_ENABLE = 4621
# Radio Coex Enable
# /** Format: `b`
# *
# * Required capability: SPINEL_CAP_RADIO_COEX
# *
# * Indicates if radio coex is enabled or disabled. Set to true to enable radio coex.
# */
SPINEL_PROP_PHY_EXT__END = 4864
# Radio Coex Enable
# /** Format: `b`
# *
# * Required capability: SPINEL_CAP_RADIO_COEX
# *
# * Indicates if radio coex is enabled or disabled. Set to true to enable radio coex.
# */
SPINEL_PROP_MAC__BEGIN = 48
# MAC Scan State
# /** Format: `C`
# *
# * Possible values are from enumeration `spinel_scan_state_t`.
# *
# * SCAN_STATE_IDLE
# * SCAN_STATE_BEACON
# * SCAN_STATE_ENERGY
# * SCAN_STATE_DISCOVER
# *
# * Set to `SCAN_STATE_BEACON` to start an active scan.
# * Beacons will be emitted from `PROP_MAC_SCAN_BEACON`.
# *
# * Set to `SCAN_STATE_ENERGY` to start an energy scan.
# * Channel energy result will be reported by emissions
# * of `PROP_MAC_ENERGY_SCAN_RESULT` (per channel).
# *
# * Set to `SCAN_STATE_DISCOVER` to start a Thread MLE discovery
# * scan operation. Discovery scan result will be emitted from
# * `PROP_MAC_SCAN_BEACON`.
# *
# * Value switches to `SCAN_STATE_IDLE` when scan is complete.
# */
SPINEL_PROP_MAC_SCAN_STATE = 48
# MAC Scan Channel Mask
# /** Format: `A(C)`
# *
# * List of channels to scan.
# */
SPINEL_PROP_MAC_SCAN_MASK = 49
# MAC Scan Channel Period
# /** Format: `S`
# * Unit: milliseconds per channel
# */
SPINEL_PROP_MAC_SCAN_PERIOD = 50
# MAC Scan Beacon
# /** Format `Cct(ESSc)t(iCUdd)` - Asynchronous event only
# *
# * Scan beacons have two embedded structures which contain
# * information about the MAC layer and the NET layer. Their
# * format depends on the MAC and NET layer currently in use.
# * The format below is for an 802.15.4 MAC with Thread:
# *
# * `C`: Channel
# * `c`: RSSI of the beacon
# * `t`: MAC layer properties (802.15.4 layer)
# * `E`: Long address
# * `S`: Short address
# * `S`: PAN-ID
# * `c`: LQI
# * NET layer properties
# * `i`: Protocol Number (SPINEL_PROTOCOL_TYPE_* values)
# * `C`: Flags (SPINEL_BEACON_THREAD_FLAG_* values)
# * `U`: Network Name
# * `d`: XPANID
# * `d`: Steering data
# *
# * Extra parameters may be added to each of the structures
# * in the future, so care should be taken to read the length
# * that prepends each structure.
# */
SPINEL_PROP_MAC_SCAN_BEACON = 51
# MAC Long Address
# /** Format: `E`
# *
# * The 802.15.4 long address of this node.
# */
SPINEL_PROP_MAC_15_4_LADDR = 52
# MAC Short Address
# /** Format: `S`
# *
# * The 802.15.4 short address of this node.
# */
SPINEL_PROP_MAC_15_4_SADDR = 53
# MAC PAN ID
# /** Format: `S`
# *
# * The 802.15.4 PANID this node is associated with.
# */
SPINEL_PROP_MAC_15_4_PANID = 54
# MAC Stream Raw Enabled
# /** Format: `b`
# *
# * Set to true to enable raw MAC frames to be emitted from
# * `PROP_STREAM_RAW`.
# */
SPINEL_PROP_MAC_RAW_STREAM_ENABLED = 55
# MAC Promiscuous Mode
# /** Format: `C`
# *
# * Possible values are from enumeration
# * `SPINEL_MAC_PROMISCUOUS_MODE_*`:
# *
# * `SPINEL_MAC_PROMISCUOUS_MODE_OFF`
# * Normal MAC filtering is in place.
# *
# * `SPINEL_MAC_PROMISCUOUS_MODE_NETWORK`
# * All MAC packets matching network are passed up
# * the stack.
# *
# * `SPINEL_MAC_PROMISCUOUS_MODE_FULL`
# * All decoded MAC packets are passed up the stack.
# */
SPINEL_PROP_MAC_PROMISCUOUS_MODE = 56
# MAC Energy Scan Result
# /** Format: `Cc` - Asynchronous event only
# *
# * This property is emitted during energy scan operation
# * per scanned channel with following format:
# *
# * `C`: Channel
# * `c`: RSSI (in dBm)
# */
SPINEL_PROP_MAC_ENERGY_SCAN_RESULT = 57
# MAC Data Poll Period
# /** Format: `L`
# * Unit: millisecond
# * The (user-specified) data poll (802.15.4 MAC Data Request) period
# * in milliseconds. Value zero means there is no user-specified
# * poll period, and the network stack determines the maximum period
# * based on the MLE Child Timeout.
# *
# * If the value is non-zero, it specifies the maximum period between
# * data poll transmissions. Note that the network stack may send data
# * request transmissions more frequently when expecting a control-message
# * (e.g., when waiting for an MLE Child ID Response).
# */
SPINEL_PROP_MAC_DATA_POLL_PERIOD = 58
# MAC RxOnWhenIdle mode
# /** Format: `b`
# *
# * Set to true to enable RxOnWhenIdle or false to disable it.
# * When True, the radio is expected to stay in receive state during
# * idle periods. When False, the radio is expected to switch to sleep
# * state during idle periods.
# */
SPINEL_PROP_MAC_RX_ON_WHEN_IDLE_MODE = 59
# MAC Alternate Short Address
# /** Format: `S`
# *
# * The 802.15.4 alternate short address.
# */
SPINEL_PROP_MAC_15_4_ALT_SADDR = 60
# MAC Receive At
# /** Format: `XLC`
# *
# * Schedule a radio reception window at a specific time and duration.
# *
# * `X`: The receive window start time.
# * `L`: The receive window duration.
# * `C`: The receive channel.
# */
SPINEL_PROP_MAC_RX_AT = 61
# MAC Receive At
# /** Format: `XLC`
# *
# * Schedule a radio reception window at a specific time and duration.
# *
# * `X`: The receive window start time.
# * `L`: The receive window duration.
# * `C`: The receive channel.
# */
SPINEL_PROP_MAC__END = 64
# MAC Receive At
# /** Format: `XLC`
# *
# * Schedule a radio reception window at a specific time and duration.
# *
# * `X`: The receive window start time.
# * `L`: The receive window duration.
# * `C`: The receive channel.
# */
SPINEL_PROP_MAC_EXT__BEGIN = 4864
# MAC Allowlist
# /** Format: `A(t(Ec))`
# * Required capability: `CAP_MAC_ALLOWLIST`
# *
# * Structure Parameters:
# *
# * `E`: EUI64 address of node
# * `c`: Optional RSSI-override value. The value 127 indicates
# * that the RSSI-override feature is not enabled for this
# * address. If this value is omitted when setting or
# * inserting, it is assumed to be 127. This parameter is
# * ignored when removing.
# */
SPINEL_PROP_MAC_ALLOWLIST = 4864
# MAC Allowlist Enabled Flag
# /** Format: `b`
# * Required capability: `CAP_MAC_ALLOWLIST`
# */
SPINEL_PROP_MAC_ALLOWLIST_ENABLED = 4865
# MAC Extended Address
# /** Format: `E`
# *
# * Specified by Thread. Randomly-chosen, but non-volatile EUI-64.
# */
SPINEL_PROP_MAC_EXTENDED_ADDR = 4866
# MAC Source Match Enabled Flag
# /** Format: `b`
# * Required Capability: SPINEL_CAP_MAC_RAW or SPINEL_CAP_CONFIG_RADIO
# *
# * Set to true to enable radio source matching or false to disable it.
# * The source match functionality is used by radios when generating
# * ACKs. The short and extended address lists are used for setting
# * the Frame Pending bit in the ACKs.
# */
SPINEL_PROP_MAC_SRC_MATCH_ENABLED = 4867
# MAC Source Match Short Address List
# /** Format: `A(S)`
# * Required Capability: SPINEL_CAP_MAC_RAW or SPINEL_CAP_CONFIG_RADIO
# */
SPINEL_PROP_MAC_SRC_MATCH_SHORT_ADDRESSES = 4868
# MAC Source Match Extended Address List
# /** Format: `A(E)`
# * Required Capability: SPINEL_CAP_MAC_RAW or SPINEL_CAP_CONFIG_RADIO
# */
SPINEL_PROP_MAC_SRC_MATCH_EXTENDED_ADDRESSES = 4869
# MAC Denylist
# /** Format: `A(t(E))`
# * Required capability: `CAP_MAC_ALLOWLIST`
# *
# * Structure Parameters:
# *
# * `E`: EUI64 address of node
# */
SPINEL_PROP_MAC_DENYLIST = 4870
# MAC Denylist Enabled Flag
# /** Format: `b`
# * Required capability: `CAP_MAC_ALLOWLIST`
# */
SPINEL_PROP_MAC_DENYLIST_ENABLED = 4871
# MAC Received Signal Strength Filter
# /** Format: `A(t(Ec))`
# * Required capability: `CAP_MAC_ALLOWLIST`
# *
# * Structure Parameters:
# *
# * * `E`: Optional EUI64 address of node. Set default RSS if not included.
# * * `c`: Fixed RSS. 127 means not set.
# */
SPINEL_PROP_MAC_FIXED_RSS = 4872
# The CCA failure rate
# /** Format: `S`
# *
# * This property provides the current CCA (Clear Channel Assessment) failure rate.
# *
# * Maximum value `0xffff` corresponding to 100% failure rate.
# */
SPINEL_PROP_MAC_CCA_FAILURE_RATE = 4873
# MAC Max direct retry number
# /** Format: `C`
# *
# * The maximum (user-specified) number of direct frame transmission retries.
# */
SPINEL_PROP_MAC_MAX_RETRY_NUMBER_DIRECT = 4874
# MAC Max indirect retry number
# /** Format: `C`
# * Required capability: `SPINEL_CAP_CONFIG_FTD`
# *
# * The maximum (user-specified) number of indirect frame transmission retries.
# */
SPINEL_PROP_MAC_MAX_RETRY_NUMBER_INDIRECT = 4875
# MAC Max indirect retry number
# /** Format: `C`
# * Required capability: `SPINEL_CAP_CONFIG_FTD`
# *
# * The maximum (user-specified) number of indirect frame transmission retries.
# */
SPINEL_PROP_MAC_EXT__END = 5120
# MAC Max indirect retry number
# /** Format: `C`
# * Required capability: `SPINEL_CAP_CONFIG_FTD`
# *
# * The maximum (user-specified) number of indirect frame transmission retries.
# */
SPINEL_PROP_NET__BEGIN = 64
# Network Is Saved (Is Commissioned)
# /** Format: `b` - Read only
# *
# * Returns true if there is a network state stored/saved.
# */
SPINEL_PROP_NET_SAVED = 64
# Network Interface Status
# /** Format `b` - Read-write
# *
# * Network interface up/down status. Write true to bring
# * interface up and false to bring interface down.
# */
SPINEL_PROP_NET_IF_UP = 65
# Thread Stack Operational Status
# /** Format `b` - Read-write
# *
# * Thread stack operational status. Write true to start
# * Thread stack and false to stop it.
# */
SPINEL_PROP_NET_STACK_UP = 66
# Thread Device Role
# /** Format `C` - Read-write
# *
# * Possible values are from enumeration `spinel_net_role_t`
# *
# * SPINEL_NET_ROLE_DETACHED = 0,
# * SPINEL_NET_ROLE_CHILD = 1,
# * SPINEL_NET_ROLE_ROUTER = 2,
# * SPINEL_NET_ROLE_LEADER = 3,
# * SPINEL_NET_ROLE_DISABLED = 4,
# */
SPINEL_PROP_NET_ROLE = 67
# Thread Network Name
# /** Format `U` - Read-write
# */
SPINEL_PROP_NET_NETWORK_NAME = 68
# Thread Network Extended PAN ID
# /** Format `D` - Read-write
# */
SPINEL_PROP_NET_XPANID = 69
# Thread Network Key
# /** Format `D` - Read-write
# */
SPINEL_PROP_NET_NETWORK_KEY = 70
# Thread Network Key Sequence Counter
# /** Format `L` - Read-write
# */
SPINEL_PROP_NET_KEY_SEQUENCE_COUNTER = 71
# Thread Network Partition Id
# /** Format `L` - Read-write
# *
# * The partition ID of the partition that this node is a
# * member of.
# */
SPINEL_PROP_NET_PARTITION_ID = 72
# Require Join Existing
# /** Format: `b`
# * Default Value: `false`
# *
# * This flag is typically used for nodes that are associating with an
# * existing network for the first time. If this is set to `true` before
# * `PROP_NET_STACK_UP` is set to `true`, the
# * creation of a new partition at association is prevented. If the node
# * cannot associate with an existing partition, `PROP_LAST_STATUS` will
# * emit a status that indicates why the association failed and
# * `PROP_NET_STACK_UP` will automatically revert to `false`.
# *
# * Once associated with an existing partition, this flag automatically
# * reverts to `false`.
# *
# * The behavior of this property being set to `true` when
# * `PROP_NET_STACK_UP` is already set to `true` is undefined.
# */
SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING = 73
# Thread Network Key Switch Guard Time
# /** Format `L` - Read-write
# */
SPINEL_PROP_NET_KEY_SWITCH_GUARDTIME = 74
# Thread Network PSKc
# /** Format `D` - Read-write
# */
SPINEL_PROP_NET_PSKC = 75
# Instruct NCP to leave the current network gracefully
# /** Format Empty - Write only
# */
SPINEL_PROP_NET_LEAVE_GRACEFULLY = 76
# Instruct NCP to leave the current network gracefully
# /** Format Empty - Write only
# */
SPINEL_PROP_NET__END = 80
# Instruct NCP to leave the current network gracefully
# /** Format Empty - Write only
# */
SPINEL_PROP_NET_EXT__BEGIN = 5120
# Instruct NCP to leave the current network gracefully
# /** Format Empty - Write only
# */
SPINEL_PROP_NET_EXT__END = 5376
# Instruct NCP to leave the current network gracefully
# /** Format Empty - Write only
# */
SPINEL_PROP_THREAD__BEGIN = 80
# Thread Leader IPv6 Address
# /** Format `6` - Read only
# */
SPINEL_PROP_THREAD_LEADER_ADDR = 80
# Thread Parent Info
# /** Format: `ESLccCCCCC` - Read only
# *
# * `E`: Extended address
# * `S`: RLOC16
# * `L`: Age (seconds since last heard from)
# * `c`: Average RSS (in dBm)
# * `c`: Last RSSI (in dBm)
# * `C`: Link Quality In
# * `C`: Link Quality Out
# * `C`: Version
# * `C`: CSL clock accuracy
# * `C`: CSL uncertainty
# */
SPINEL_PROP_THREAD_PARENT = 81
# Thread Child Table
# /** Format: [A(t(ESLLCCcCc)] - Read only
# *
# * Data per item is:
# *
# * `E`: Extended address
# * `S`: RLOC16
# * `L`: Timeout (in seconds)
# * `L`: Age (in seconds)
# * `L`: Network Data version
# * `C`: Link Quality In
# * `c`: Average RSS (in dBm)
# * `C`: Mode (bit-flags)
# * `c`: Last RSSI (in dBm)
# */
SPINEL_PROP_THREAD_CHILD_TABLE = 82
# Thread Leader Router Id
# /** Format `C` - Read only
# *
# * The router-id of the current leader.
# */
SPINEL_PROP_THREAD_LEADER_RID = 83
# Thread Leader Weight
# /** Format `C` - Read only
# *
# * The leader weight of the current leader.
# */
SPINEL_PROP_THREAD_LEADER_WEIGHT = 84
# Thread Local Leader Weight
# /** Format `C` - Read only
# *
# * The leader weight of this node.
# */
SPINEL_PROP_THREAD_LOCAL_LEADER_WEIGHT = 85
# Thread Local Network Data
# /** Format `D` - Read only
# */
SPINEL_PROP_THREAD_NETWORK_DATA = 86
# Thread Local Network Data Version
# /** Format `C` - Read only
# */
SPINEL_PROP_THREAD_NETWORK_DATA_VERSION = 87
# Thread Local Stable Network Data
# /** Format `D` - Read only
# */
SPINEL_PROP_THREAD_STABLE_NETWORK_DATA = 88
# Thread Local Stable Network Data Version
# /** Format `C` - Read only
# */
SPINEL_PROP_THREAD_STABLE_NETWORK_DATA_VERSION = 89
# On-Mesh Prefixes
# /** Format: `A(t(6CbCbSC))`
# *
# * Data per item is:
# *
# * `6`: IPv6 Prefix
# * `C`: Prefix length in bits
# * `b`: Stable flag
# * `C`: TLV flags (SPINEL_NET_FLAG_* definition)
# * `b`: "Is defined locally" flag. Set if this network was locally
# * defined. Assumed to be true for set, insert and replace. Clear if
# * the on mesh network was defined by another node.
# * This field is ignored for INSERT and REMOVE commands.
# * `S`: The RLOC16 of the device that registered this on-mesh prefix entry.
# * This value is not used and ignored when adding an on-mesh prefix.
# * This field is ignored for INSERT and REMOVE commands.
# * `C`: TLV flags extended (additional field for Thread 1.2 features).
# */
SPINEL_PROP_THREAD_ON_MESH_NETS = 90
# Off-mesh routes
# /** Format: [A(t(6CbCbb))]
# *
# * Data per item is:
# *
# * `6`: Route Prefix
# * `C`: Prefix length in bits
# * `b`: Stable flag
# * `C`: Route flags (SPINEL_ROUTE_FLAG_* and SPINEL_ROUTE_PREFERENCE_* definitions)
# * `b`: "Is defined locally" flag. Set if this route info was locally
# * defined as part of local network data. Assumed to be true for set,
# * insert and replace. Clear if the route is part of partition's network
# * data.
# * `b`: "Next hop is this device" flag. Set if the next hop for the
# * route is this device itself (i.e., route was added by this device)
# * This value is ignored when adding an external route. For any added
# * route the next hop is this device.
# * `S`: The RLOC16 of the device that registered this route entry.
# * This value is not used and ignored when adding a route.
# */
SPINEL_PROP_THREAD_OFF_MESH_ROUTES = 91
# Thread Assisting Ports
# /** Format `A(S)`
# *
# * Array of port numbers.
# */
SPINEL_PROP_THREAD_ASSISTING_PORTS = 92
# Thread Allow Local Network Data Change
# /** Format `b` - Read-write
# *
# * Set to true before changing local net data. Set to false when finished.
# * This allows changes to be aggregated into a single event.
# */
SPINEL_PROP_THREAD_ALLOW_LOCAL_NET_DATA_CHANGE = 93
# Thread Mode
# /** Format: `C`
# *
# * This property contains the value of the mode
# * TLV for this node. The meaning of the bits in this
# * bit-field are defined by section 4.5.2 of the Thread
# * specification.
# *
# * The values `SPINEL_THREAD_MODE_*` defines the bit-fields
# */
SPINEL_PROP_THREAD_MODE = 94
# Thread Mode
# /** Format: `C`
# *
# * This property contains the value of the mode
# * TLV for this node. The meaning of the bits in this
# * bit-field are defined by section 4.5.2 of the Thread
# * specification.
# *
# * The values `SPINEL_THREAD_MODE_*` defines the bit-fields
# */
SPINEL_PROP_THREAD__END = 96
# Thread Mode
# /** Format: `C`
# *
# * This property contains the value of the mode
# * TLV for this node. The meaning of the bits in this
# * bit-field are defined by section 4.5.2 of the Thread
# * specification.
# *
# * The values `SPINEL_THREAD_MODE_*` defines the bit-fields
# */
SPINEL_PROP_THREAD_EXT__BEGIN = 5376
# Thread Child Timeout
# /** Format: `L`
# * Unit: Seconds
# *
# * Used when operating in the Child role.
# */
SPINEL_PROP_THREAD_CHILD_TIMEOUT = 5376
# Thread RLOC16
# /** Format: `S`
# */
SPINEL_PROP_THREAD_RLOC16 = 5377
# Thread Router Upgrade Threshold
# /** Format: `C`
# */
SPINEL_PROP_THREAD_ROUTER_UPGRADE_THRESHOLD = 5378
# Thread Context Reuse Delay
# /** Format: `L`
# */
SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY = 5379
# Thread Network ID Timeout
# /** Format: `C`
# */
SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT = 5380
# List of active thread router ids
# /** Format: `A(C)`
# *
# * Note that some implementations may not support CMD_GET_VALUE
# * router ids, but may support CMD_REMOVE_VALUE when the node is
# * a leader.
# */
SPINEL_PROP_THREAD_ACTIVE_ROUTER_IDS = 5381
# Forward IPv6 packets that use RLOC16 addresses to HOST.
# /** Format: `b`
# *
# * Allow host to directly observe all IPv6 packets received by the NCP,
# * including ones sent to the RLOC16 address.
# *
# * Default is false.
# */
SPINEL_PROP_THREAD_RLOC16_DEBUG_PASSTHRU = 5382
# Router Role Enabled
# /** Format `b`
# *
# * Allows host to indicate whether or not the router role is enabled.
# * If current role is a router, setting this property to `false` starts
# * a re-attach process as an end-device.
# */
SPINEL_PROP_THREAD_ROUTER_ROLE_ENABLED = 5383
# Thread Router Downgrade Threshold
# /** Format: `C`
# */
SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD = 5384
# Thread Router Selection Jitter
# /** Format: `C`
# */
SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER = 5385
# Thread Preferred Router Id
# /** Format: `C` - Write only
# *
# * Specifies the preferred Router Id. Upon becoming a router/leader the node
# * attempts to use this Router Id. If the preferred Router Id is not set or
# * if it can not be used, a randomly generated router id is picked. This
# * property can be set only when the device role is either detached or
# * disabled.
# */
SPINEL_PROP_THREAD_PREFERRED_ROUTER_ID = 5386
# Thread Neighbor Table
# /** Format: `A(t(ESLCcCbLLc))` - Read only
# *
# * Data per item is:
# *
# * `E`: Extended address
# * `S`: RLOC16
# * `L`: Age (in seconds)
# * `C`: Link Quality In
# * `c`: Average RSS (in dBm)
# * `C`: Mode (bit-flags)
# * `b`: `true` if neighbor is a child, `false` otherwise.
# * `L`: Link Frame Counter
# * `L`: MLE Frame Counter
# * `c`: The last RSSI (in dBm)
# */
SPINEL_PROP_THREAD_NEIGHBOR_TABLE = 5387
# Thread Max Child Count
# /** Format: `C`
# *
# * Specifies the maximum number of children currently allowed.
# * This parameter can only be set when Thread protocol operation
# * has been stopped.
# */
SPINEL_PROP_THREAD_CHILD_COUNT_MAX = 5388
# Leader Network Data
# /** Format: `D` - Read only
# */
SPINEL_PROP_THREAD_LEADER_NETWORK_DATA = 5389
# Stable Leader Network Data
# /** Format: `D` - Read only
# */
SPINEL_PROP_THREAD_STABLE_LEADER_NETWORK_DATA = 5390
# Thread Joiner Data
# /** Format `A(T(ULE))`
# * PSKd, joiner timeout, eui64 (optional)
# *
# * This property is being deprecated by SPINEL_PROP_MESHCOP_COMMISSIONER_JOINERS.
# */
SPINEL_PROP_THREAD_JOINERS = 5391
# Thread Commissioner Enable
# /** Format `b`
# *
# * Default value is `false`.
# *
# * This property is being deprecated by SPINEL_PROP_MESHCOP_COMMISSIONER_STATE.
# */
SPINEL_PROP_THREAD_COMMISSIONER_ENABLED = 5392
# Thread TMF proxy enable
# /** Format `b`
# * Required capability: `SPINEL_CAP_THREAD_TMF_PROXY`
# *
# * This property is deprecated.
# */
SPINEL_PROP_THREAD_TMF_PROXY_ENABLED = 5393
# Thread TMF proxy stream
# /** Format `dSS`
# * Required capability: `SPINEL_CAP_THREAD_TMF_PROXY`
# *
# * This property is deprecated. Please see `SPINEL_PROP_THREAD_UDP_FORWARD_STREAM`.
# */
SPINEL_PROP_THREAD_TMF_PROXY_STREAM = 5394
# Thread "joiner" flag used during discovery scan operation
# /** Format `b`
# *
# * This property defines the Joiner Flag value in the Discovery Request TLV.
# *
# * Default value is `false`.
# */
SPINEL_PROP_THREAD_DISCOVERY_SCAN_JOINER_FLAG = 5395
# Enable EUI64 filtering for discovery scan operation.
# /** Format `b`
# *
# * Default value is `false`
# */
SPINEL_PROP_THREAD_DISCOVERY_SCAN_ENABLE_FILTERING = 5396
# PANID used for Discovery scan operation (used for PANID filtering).
# /** Format: `S`
# *
# * Default value is 0xffff (Broadcast PAN) to disable PANID filtering
# */
SPINEL_PROP_THREAD_DISCOVERY_SCAN_PANID = 5397
# Thread (out of band) steering data for MLE Discovery Response.
# /** Format `E` - Write only
# *
# * Required capability: SPINEL_CAP_OOB_STEERING_DATA.
# *
# * Writing to this property allows to set/update the MLE
# * Discovery Response steering data out of band.
# *
# * - All zeros to clear the steering data (indicating that
# * there is no steering data).
# * - All 0xFFs to set steering data/bloom filter to
# * accept/allow all.
# * - A specific EUI64 which is then added to current steering
# * data/bloom filter.
# */
SPINEL_PROP_THREAD_STEERING_DATA = 5398
# Thread Router Table.
# /** Format: `A(t(ESCCCCCCb)` - Read only
# *
# * Data per item is:
# *
# * `E`: IEEE 802.15.4 Extended Address
# * `S`: RLOC16
# * `C`: Router ID
# * `C`: Next hop to router
# * `C`: Path cost to router
# * `C`: Link Quality In
# * `C`: Link Quality Out
# * `C`: Age (seconds since last heard)
# * `b`: Link established with Router ID or not.
# */
SPINEL_PROP_THREAD_ROUTER_TABLE = 5399
# Thread Active Operational Dataset
# /** Format: `A(t(iD))` - Read-Write
# *
# * This property provides access to current Thread Active Operational Dataset. A Thread device maintains the
# * Operational Dataset that it has stored locally and the one currently in use by the partition to which it is
# * attached. This property corresponds to the locally stored Dataset on the device.
# *
# * Operational Dataset consists of a set of supported properties (e.g., channel, network key, network name, PAN id,
# * etc). Note that not all supported properties may be present (have a value) in a Dataset.
# *
# * The Dataset value is encoded as an array of structs containing pairs of property key (as `i`) followed by the
# * property value (as `D`). The property value must follow the format associated with the corresponding property.
# *
# * On write, any unknown/unsupported property keys must be ignored.
# *
# * The following properties can be included in a Dataset list:
# *
# * SPINEL_PROP_DATASET_ACTIVE_TIMESTAMP
# * SPINEL_PROP_PHY_CHAN
# * SPINEL_PROP_PHY_CHAN_SUPPORTED (Channel Mask Page 0)
# * SPINEL_PROP_NET_NETWORK_KEY
# * SPINEL_PROP_NET_NETWORK_NAME
# * SPINEL_PROP_NET_XPANID
# * SPINEL_PROP_MAC_15_4_PANID
# * SPINEL_PROP_IPV6_ML_PREFIX
# * SPINEL_PROP_NET_PSKC
# * SPINEL_PROP_DATASET_SECURITY_POLICY
# */
SPINEL_PROP_THREAD_ACTIVE_DATASET = 5400
# Thread Pending Operational Dataset
# /** Format: `A(t(iD))` - Read-Write
# *
# * This property provide access to current locally stored Pending Operational Dataset.
# *
# * The formatting of this property follows the same rules as in SPINEL_PROP_THREAD_ACTIVE_DATASET.
# *
# * In addition supported properties in SPINEL_PROP_THREAD_ACTIVE_DATASET, the following properties can also
# * be included in the Pending Dataset:
# *
# * SPINEL_PROP_DATASET_PENDING_TIMESTAMP
# * SPINEL_PROP_DATASET_DELAY_TIMER
# */
SPINEL_PROP_THREAD_PENDING_DATASET = 5401
# Send MGMT_SET Thread Active Operational Dataset
# /** Format: `A(t(iD))` - Write only
# *
# * The formatting of this property follows the same rules as in SPINEL_PROP_THREAD_ACTIVE_DATASET.
# *
# * This is write-only property. When written, it triggers a MGMT_ACTIVE_SET meshcop command to be sent to leader
# * with the given Dataset. The spinel frame response should be a `LAST_STATUS` with the status of the transmission
# * of MGMT_ACTIVE_SET command.
# *
# * In addition to supported properties in SPINEL_PROP_THREAD_ACTIVE_DATASET, the following property can be
# * included in the Dataset (to allow for custom raw TLVs):
# *
# * SPINEL_PROP_DATASET_RAW_TLVS
# */
SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET = 5402
# Send MGMT_SET Thread Pending Operational Dataset
# /** Format: `A(t(iD))` - Write only
# *
# * This property is similar to SPINEL_PROP_THREAD_PENDING_DATASET and follows the same format and rules.
# *
# * In addition to supported properties in SPINEL_PROP_THREAD_PENDING_DATASET, the following property can be
# * included the Dataset (to allow for custom raw TLVs to be provided).
# *
# * SPINEL_PROP_DATASET_RAW_TLVS
# */
SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET = 5403
# Operational Dataset Active Timestamp
# /** Format: `X` - No direct read or write
# *
# * It can only be included in one of the Dataset related properties below:
# *
# * SPINEL_PROP_THREAD_ACTIVE_DATASET
# * SPINEL_PROP_THREAD_PENDING_DATASET
# * SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET
# * SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET
# * SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET
# * SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
# */
SPINEL_PROP_DATASET_ACTIVE_TIMESTAMP = 5404
# Operational Dataset Pending Timestamp
# /** Format: `X` - No direct read or write
# *
# * It can only be included in one of the Pending Dataset properties:
# *
# * SPINEL_PROP_THREAD_PENDING_DATASET
# * SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET
# * SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
# */
SPINEL_PROP_DATASET_PENDING_TIMESTAMP = 5405
# Operational Dataset Delay Timer
# /** Format: `L` - No direct read or write
# *
# * Delay timer (in ms) specifies the time renaming until Thread devices overwrite the value in the Active
# * Operational Dataset with the corresponding values in the Pending Operational Dataset.
# *
# * It can only be included in one of the Pending Dataset properties:
# *
# * SPINEL_PROP_THREAD_PENDING_DATASET
# * SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET
# * SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
# */
SPINEL_PROP_DATASET_DELAY_TIMER = 5406
# Operational Dataset Security Policy
# /** Format: `SD` - No direct read or write
# *
# * It can only be included in one of the Dataset related properties below:
# *
# * SPINEL_PROP_THREAD_ACTIVE_DATASET
# * SPINEL_PROP_THREAD_PENDING_DATASET
# * SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET
# * SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET
# * SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET
# * SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
# *
# * Content is
# * `S` : Key Rotation Time (in units of hour)
# * `C` : Security Policy Flags (as specified in Thread 1.1 Section 8.10.1.15)
# * `C` : Optional Security Policy Flags extension (as specified in Thread 1.2 Section 8.10.1.15).
# * 0xf8 is used if this field is missing.
# */
SPINEL_PROP_DATASET_SECURITY_POLICY = 5407
# Operational Dataset Additional Raw TLVs
# /** Format: `D` - No direct read or write
# *
# * This property defines extra raw TLVs that can be added to an Operational DataSet.
# *
# * It can only be included in one of the following Dataset properties:
# *
# * SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET
# * SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET
# * SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET
# * SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
# */
SPINEL_PROP_DATASET_RAW_TLVS = 5408
# Child table addresses
# /** Format: `A(t(ESA(6)))` - Read only
# *
# * This property provides the list of all addresses associated with every child
# * including any registered IPv6 addresses.
# *
# * Data per item is:
# *
# * `E`: Extended address of the child
# * `S`: RLOC16 of the child
# * `A(6)`: List of IPv6 addresses registered by the child (if any)
# */
SPINEL_PROP_THREAD_CHILD_TABLE_ADDRESSES = 5409
# Neighbor Table Frame and Message Error Rates
# /** Format: `A(t(ESSScc))`
# * Required capability: `CAP_ERROR_RATE_TRACKING`
# *
# * This property provides link quality related info including
# * frame and (IPv6) message error rates for all neighbors.
# *
# * With regards to message error rate, note that a larger (IPv6)
# * message can be fragmented and sent as multiple MAC frames. The
# * message transmission is considered a failure, if any of its
# * fragments fail after all MAC retry attempts.
# *
# * Data per item is:
# *
# * `E`: Extended address of the neighbor
# * `S`: RLOC16 of the neighbor
# * `S`: Frame error rate (0 -> 0%, 0xffff -> 100%)
# * `S`: Message error rate (0 -> 0%, 0xffff -> 100%)
# * `c`: Average RSSI (in dBm)
# * `c`: Last RSSI (in dBm)
# */
SPINEL_PROP_THREAD_NEIGHBOR_TABLE_ERROR_RATES = 5410
# EID (Endpoint Identifier) IPv6 Address Cache Table
# /** Format `A(t(6SCCt(bL6)t(bSS)))
# *
# * This property provides Thread EID address cache table.
# *
# * Data per item is:
# *
# * `6` : Target IPv6 address
# * `S` : RLOC16 of target
# * `C` : Age (order of use, 0 indicates most recently used entry)
# * `C` : Entry state (values are defined by enumeration `SPINEL_ADDRESS_CACHE_ENTRY_STATE_*`).
# *
# * `t` : Info when state is `SPINEL_ADDRESS_CACHE_ENTRY_STATE_CACHED`
# * `b` : Indicates whether last transaction time and ML-EID are valid.
# * `L` : Last transaction time
# * `6` : Mesh-local EID
# *
# * `t` : Info when state is other than `SPINEL_ADDRESS_CACHE_ENTRY_STATE_CACHED`
# * `b` : Indicates whether the entry can be evicted.
# * `S` : Timeout in seconds
# * `S` : Retry delay (applicable if in query-retry state).
# */
SPINEL_PROP_THREAD_ADDRESS_CACHE_TABLE = 5411
# Thread UDP forward stream
# /** Format `dS6S`
# * Required capability: `SPINEL_CAP_THREAD_UDP_FORWARD`
# *
# * This property helps exchange UDP packets with host.
# *
# * `d`: UDP payload
# * `S`: Remote UDP port
# * `6`: Remote IPv6 address
# * `S`: Local UDP port
# */
SPINEL_PROP_THREAD_UDP_FORWARD_STREAM = 5412
# Send MGMT_GET Thread Active Operational Dataset
# /** Format: `A(t(iD))` - Write only
# *
# * The formatting of this property follows the same rules as in SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET. This
# * property further allows the sender to not include a value associated with properties in formatting of `t(iD)`,
# * i.e., it should accept either a `t(iD)` or a `t(i)` encoding (in both cases indicating that the associated
# * Dataset property should be requested as part of MGMT_GET command).
# *
# * This is write-only property. When written, it triggers a MGMT_ACTIVE_GET meshcop command to be sent to leader
# * requesting the Dataset related properties from the format. The spinel frame response should be a `LAST_STATUS`
# * with the status of the transmission of MGMT_ACTIVE_GET command.
# *
# * In addition to supported properties in SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET, the following property can be
# * optionally included in the Dataset:
# *
# * SPINEL_PROP_DATASET_DEST_ADDRESS
# */
SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET = 5413
# Send MGMT_GET Thread Pending Operational Dataset
# /** Format: `A(t(iD))` - Write only
# *
# * The formatting of this property follows the same rules as in SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET.
# *
# * This is write-only property. When written, it triggers a MGMT_PENDING_GET meshcop command to be sent to leader
# * with the given Dataset. The spinel frame response should be a `LAST_STATUS` with the status of the transmission
# * of MGMT_PENDING_GET command.
# */
SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET = 5414
# Operational Dataset (MGMT_GET) Destination IPv6 Address
# /** Format: `6` - No direct read or write
# *
# * This property specifies the IPv6 destination when sending MGMT_GET command for either Active or Pending Dataset
# * if not provided, Leader ALOC address is used as default.
# *
# * It can only be included in one of the MGMT_GET Dataset properties:
# *
# * SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET
# * SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET
# */
SPINEL_PROP_DATASET_DEST_ADDRESS = 5415
# Thread New Operational Dataset
# /** Format: `A(t(iD))` - Read only - FTD build only
# *
# * This property allows host to request NCP to create and return a new Operation Dataset to use when forming a new
# * network.
# *
# * Operational Dataset consists of a set of supported properties (e.g., channel, network key, network name, PAN id,
# * etc). Note that not all supported properties may be present (have a value) in a Dataset.
# *
# * The Dataset value is encoded as an array of structs containing pairs of property key (as `i`) followed by the
# * property value (as `D`). The property value must follow the format associated with the corresponding property.
# *
# * The following properties can be included in a Dataset list:
# *
# * SPINEL_PROP_DATASET_ACTIVE_TIMESTAMP
# * SPINEL_PROP_PHY_CHAN
# * SPINEL_PROP_PHY_CHAN_SUPPORTED (Channel Mask Page 0)
# * SPINEL_PROP_NET_NETWORK_KEY
# * SPINEL_PROP_NET_NETWORK_NAME
# * SPINEL_PROP_NET_XPANID
# * SPINEL_PROP_MAC_15_4_PANID
# * SPINEL_PROP_IPV6_ML_PREFIX
# * SPINEL_PROP_NET_PSKC
# * SPINEL_PROP_DATASET_SECURITY_POLICY
# */
SPINEL_PROP_THREAD_NEW_DATASET = 5416
# MAC CSL Period
# /** Format: `L`
# * Required capability: `SPINEL_CAP_THREAD_CSL_RECEIVER`
# *
# * The CSL period in microseconds. Value of 0 indicates that CSL should be disabled.
# *
# * The CSL period MUST be a multiple of 160 (which is 802.15 "ten symbols time").
# */
SPINEL_PROP_THREAD_CSL_PERIOD = 5417
# MAC CSL Timeout
# /** Format: `L`
# * Required capability: `SPINEL_CAP_THREAD_CSL_RECEIVER`
# *
# * The CSL timeout in seconds.
# */
SPINEL_PROP_THREAD_CSL_TIMEOUT = 5418
# MAC CSL Channel
# /** Format: `C`
# * Required capability: `SPINEL_CAP_THREAD_CSL_RECEIVER`
# *
# * The CSL channel as described in chapter 4.6.5.1.2 of the Thread v1.2.0 Specification.
# * Value of 0 means that CSL reception (if enabled) occurs on the Thread Network channel.
# * Value from range [11,26] is an alternative channel on which a CSL reception occurs.
# */
SPINEL_PROP_THREAD_CSL_CHANNEL = 5419
# Thread Domain Name
# /** Format `U` - Read-write
# * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
# *
# * This property is available since Thread 1.2.0.
# * Write to this property succeeds only when Thread protocols are disabled.
# */
SPINEL_PROP_THREAD_DOMAIN_NAME = 5420
# Link metrics query
# /** Format: `6CC` - Write-Only
# *
# * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
# *
# * `6` : IPv6 destination address
# * `C` : Series id (0 for Single Probe)
# * `C` : List of requested metric ids encoded as bit fields in single byte
# *
# * +---------------+----+
# * | Metric | Id |
# * +---------------+----+
# * | Received PDUs | 0 |
# * | LQI | 1 |
# * | Link margin | 2 |
# * | RSSI | 3 |
# * +---------------+----+
# *
# * If the query succeeds, the NCP will send a result to the Host using
# * @ref SPINEL_PROP_THREAD_LINK_METRICS_QUERY_RESULT.
# */
SPINEL_PROP_THREAD_LINK_METRICS_QUERY = 5421
# Link metrics query result
# /** Format: `6Ct(A(t(CD)))` - Unsolicited notifications only
# *
# * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
# *
# * `6` : IPv6 destination address
# * `C` : Status
# * `t(A(t(CD)))` : Array of structs encoded as following:
# * `C` : Metric id
# * `D` : Metric value
# *
# * +---------------+----+----------------+
# * | Metric | Id | Value format |
# * +---------------+----+----------------+
# * | Received PDUs | 0 | `L` (uint32_t) |
# * | LQI | 1 | `C` (uint8_t) |
# * | Link margin | 2 | `C` (uint8_t) |
# * | RSSI | 3 | `c` (int8_t) |
# * +---------------+----+----------------+
# */
SPINEL_PROP_THREAD_LINK_METRICS_QUERY_RESULT = 5422
# Link metrics probe
# /** Format `6CC` - Write only
# * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
# *
# * Send a MLE Link Probe message to the peer.
# *
# * `6` : IPv6 destination address
# * `C` : The Series ID for which this Probe message targets at
# * `C` : The length of the Probe message, valid range: [0, 64]
# */
SPINEL_PROP_THREAD_LINK_METRICS_PROBE = 5423
# Link metrics Enhanced-ACK Based Probing management
# /** Format: 6Cd - Write only
# *
# * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
# *
# * `6` : IPv6 destination address
# * `C` : Indicate whether to register or clear the probing. `0` - clear, `1` - register
# * `C` : List of requested metric ids encoded as bit fields in single byte
# *
# * +---------------+----+
# * | Metric | Id |
# * +---------------+----+
# * | LQI | 1 |
# * | Link margin | 2 |
# * | RSSI | 3 |
# * +---------------+----+
# *
# * Result of configuration is reported asynchronously to the Host using the
# * @ref SPINEL_PROP_THREAD_LINK_METRICS_MGMT_RESPONSE.
# *
# * Whenever Enh-ACK IE report is received it is passed to the Host using the
# * @ref SPINEL_PROP_THREAD_LINK_METRICS_MGMT_ENH_ACK_IE property.
# */
SPINEL_PROP_THREAD_LINK_METRICS_MGMT_ENH_ACK = 5424
# Link metrics Enhanced-ACK Based Probing IE report
# /** Format: SEA(t(CD)) - Unsolicited notifications only
# *
# * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
# *
# * `S` : Short address of the Probing Subject
# * `E` : Extended address of the Probing Subject
# * `t(A(t(CD)))` : Struct that contains array of structs encoded as following:
# * `C` : Metric id
# * `D` : Metric value
# *
# * +---------------+----+----------------+
# * | Metric | Id | Value format |
# * +---------------+----+----------------+
# * | LQI | 1 | `C` (uint8_t) |
# * | Link margin | 2 | `C` (uint8_t) |
# * | RSSI | 3 | `c` (int8_t) |
# * +---------------+----+----------------+
# */
SPINEL_PROP_THREAD_LINK_METRICS_MGMT_ENH_ACK_IE = 5425
# Link metrics Forward Tracking Series management
# /** Format: 6CCC - Write only
# *
# * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
# *
# * `6` : IPv6 destination address
# * `C` : Series id
# * `C` : Tracked frame types encoded as bit fields in single byte, if equal to zero,
# * accounting is stopped and a series is removed
# * `C` : Requested metric ids encoded as bit fields in single byte
# *
# * +------------------+----+
# * | Frame type | Id |
# * +------------------+----+
# * | MLE Link Probe | 0 |
# * | MAC Data | 1 |
# * | MAC Data Request | 2 |
# * | MAC ACK | 3 |
# * +------------------+----+
# *
# * +---------------+----+
# * | Metric | Id |
# * +---------------+----+
# * | Received PDUs | 0 |
# * | LQI | 1 |
# * | Link margin | 2 |
# * | RSSI | 3 |
# * +---------------+----+
# *
# * Result of configuration is reported asynchronously to the Host using the
# * @ref SPINEL_PROP_THREAD_LINK_METRICS_MGMT_RESPONSE.
# */
SPINEL_PROP_THREAD_LINK_METRICS_MGMT_FORWARD = 5426
# Link metrics management response
# /** Format: 6C - Unsolicited notifications only
# *
# * Required capability: `SPINEL_CAP_THREAD_LINK_METRICS`
# *
# * `6` : IPv6 source address
# * `C` : Received status
# */
SPINEL_PROP_THREAD_LINK_METRICS_MGMT_RESPONSE = 5427
# Multicast Listeners Register Request
# /** Format `t(A(6))A(t(CD))` - Write-only
# * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
# *
# * `t(A(6))`: Array of IPv6 multicast addresses
# * `A(t(CD))`: Array of structs holding optional parameters as follows
# * `C`: Parameter id
# * `D`: Parameter value
# *
# * +----------------------------------------------------------------+
# * | Id: SPINEL_THREAD_MLR_PARAMID_TIMEOUT |
# * | Type: `L` |
# * | Description: Timeout in seconds. If this optional parameter is |
# * | omitted, the default value of the BBR will be used. |
# * | Special values: |
# * | 0 causes given addresses to be removed |
# * | 0xFFFFFFFF is permanent and persistent registration |
# * +----------------------------------------------------------------+
# *
# * Write to this property initiates update of Multicast Listeners Table on the primary BBR.
# * If the write succeeded, the result of network operation will be notified later by the
# * SPINEL_PROP_THREAD_MLR_RESPONSE property. If the write fails, no MLR.req is issued and
# * notification through the SPINEL_PROP_THREAD_MLR_RESPONSE property will not occur.
# */
SPINEL_PROP_THREAD_MLR_REQUEST = 5428
# Multicast Listeners Register Response
# /** Format `CCt(A(6))` - Unsolicited notifications only
# * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
# *
# * `C`: Status
# * `C`: MlrStatus (The Multicast Listener Registration Status)
# * `A(6)`: Array of IPv6 addresses that failed to be updated on the primary BBR
# *
# * This property is notified asynchronously when the NCP receives MLR.rsp following
# * previous write to the SPINEL_PROP_THREAD_MLR_REQUEST property.
# */
SPINEL_PROP_THREAD_MLR_RESPONSE = 5429
# Interface Identifier specified for Thread Domain Unicast Address.
# /** Format: `A(C)` - Read-write
# *
# * `A(C)`: Interface Identifier (8 bytes).
# *
# * Required capability: SPINEL_CAP_DUA
# *
# * If write to this property is performed without specified parameter
# * the Interface Identifier of the Thread Domain Unicast Address will be cleared.
# * If the DUA Interface Identifier is cleared on the NCP device,
# * the get spinel property command will be returned successfully without specified parameter.
# */
SPINEL_PROP_THREAD_DUA_ID = 5430
# Thread 1.2 Primary Backbone Router information in the Thread Network.
# /** Format: `SSLC` - Read-Only
# *
# * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
# *
# * `S`: Server.
# * `S`: Reregistration Delay (in seconds).
# * `L`: Multicast Listener Registration Timeout (in seconds).
# * `C`: Sequence Number.
# */
SPINEL_PROP_THREAD_BACKBONE_ROUTER_PRIMARY = 5431
# Thread 1.2 Backbone Router local state.
# /** Format: `C` - Read-Write
# *
# * Required capability: `SPINEL_CAP_THREAD_BACKBONE_ROUTER`
# *
# * The valid values are specified by SPINEL_THREAD_BACKBONE_ROUTER_STATE_<state> enumeration.
# * Backbone functionality will be disabled if SPINEL_THREAD_BACKBONE_ROUTER_STATE_DISABLED
# * is written to this property, enabled otherwise.
# */
SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_STATE = 5432
# Local Thread 1.2 Backbone Router configuration.
# /** Format: SLC - Read-Write
# *
# * Required capability: `SPINEL_CAP_THREAD_BACKBONE_ROUTER`
# *
# * `S`: Reregistration Delay (in seconds).
# * `L`: Multicast Listener Registration Timeout (in seconds).
# * `C`: Sequence Number.
# */
SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_CONFIG = 5433
# Register local Thread 1.2 Backbone Router configuration.
# /** Format: Empty (Write only).
# *
# * Required capability: `SPINEL_CAP_THREAD_BACKBONE_ROUTER`
# *
# * Writing to this property (with any value) will register local Backbone Router configuration.
# */
SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_REGISTER = 5434
# Thread 1.2 Backbone Router registration jitter.
# /** Format: `C` - Read-Write
# *
# * Required capability: `SPINEL_CAP_THREAD_BACKBONE_ROUTER`
# *
# * `C`: Backbone Router registration jitter.
# */
SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_REGISTRATION_JITTER = 5435
# Thread Active Operational Dataset in raw TLVs format.
# /** Format: `D` - Read-Write
# *
# * This property provides access to the current Thread Active Operational Dataset. A Thread device maintains the
# * Operational Dataset that it has stored locally and the one currently in use by the partition to which it is
# * attached. This property corresponds to the locally stored Dataset on the device.
# *
# * On write, any unknown/unsupported TLVs must be ignored.
# */
SPINEL_PROP_THREAD_ACTIVE_DATASET_TLVS = 5436
# Thread Pending Operational Dataset in raw TLVs format.
# /** Format: `D` - Read-Write
# *
# * This property provides access to the current locally stored Pending Operational Dataset.
# *
# * The formatting of this property follows the same rules as in SPINEL_PROP_THREAD_ACTIVE_DATASET_TLVS.
# *
# * On write, any unknown/unsupported TLVs must be ignored.
# */
SPINEL_PROP_THREAD_PENDING_DATASET_TLVS = 5437
# Send MGMT_SET Thread Pending Operational Dataset (in TLV format).
# /** Format: `D` - Write only
# *
# * This is write-only property. When written, it triggers a MGMT_PENDING_SET meshcop command to be sent to leader
# * with the given Dataset.
# *
# * When setting this property, the spinel frame response will be:
# * 1. A `LAST_STATUS` with the status of the transmission of MGMT_PENDING_SET command if it fails.
# * 2. A `SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET_TLVS` with no content.
# *
# * On response reception or timeout, another notification will be sent to the host:
# * A `SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET_TLVS` with a spinel_status_t indicating
# * the result of MGMT_SET_PENDING.
# *
# * On write, any unknown/unsupported TLVs must be ignored.
# */
SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET_TLVS = 5438
# Wake-up Channel
# /** Format: `C`
# *
# * The Wake-up sample channel. Channel value should be `0` (Set Wake-up Channel unspecified,
# * which means the device will use the PAN channel) or within the range [1, 10] (if 915-MHz
# * supported) and [11, 26] (if 2.4 GHz supported).
# */
SPINEL_PROP_THREAD_WAKEUP_CHANNEL = 5439
# Wake-up Channel
# /** Format: `C`
# *
# * The Wake-up sample channel. Channel value should be `0` (Set Wake-up Channel unspecified,
# * which means the device will use the PAN channel) or within the range [1, 10] (if 915-MHz
# * supported) and [11, 26] (if 2.4 GHz supported).
# */
SPINEL_PROP_THREAD_EXT__END = 5632
# Wake-up Channel
# /** Format: `C`
# *
# * The Wake-up sample channel. Channel value should be `0` (Set Wake-up Channel unspecified,
# * which means the device will use the PAN channel) or within the range [1, 10] (if 915-MHz
# * supported) and [11, 26] (if 2.4 GHz supported).
# */
SPINEL_PROP_IPV6__BEGIN = 96
#< [6]
SPINEL_PROP_IPV6_LL_ADDR = 96
# Mesh Local IPv6 Address
# /** Format: `6` - Read only
# */
SPINEL_PROP_IPV6_ML_ADDR = 97
# Mesh Local Prefix
# /** Format: `6C` - Read-write
# *
# * Provides Mesh Local Prefix
# *
# * `6`: Mesh local prefix
# * `C` : Prefix length (64 bit for Thread).
# */
SPINEL_PROP_IPV6_ML_PREFIX = 98
# IPv6 (Unicast) Address Table
# /** Format: `A(t(6CLLC))`
# *
# * This property provides all unicast addresses.
# *
# * Array of structures containing:
# *
# * `6`: IPv6 Address
# * `C`: Network Prefix Length (in bits)
# * `L`: Preferred Lifetime
# * `L`: Valid Lifetime
# */
SPINEL_PROP_IPV6_ADDRESS_TABLE = 99
# IPv6 Route Table - Deprecated
SPINEL_PROP_IPV6_ROUTE_TABLE = 100
# IPv6 ICMP Ping Offload
# /** Format: `b`
# *
# * Allow the NCP to directly respond to ICMP ping requests. If this is
# * turned on, ping request ICMP packets will not be passed to the host.
# *
# * Default value is `false`.
# */
SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD = 101
# IPv6 Multicast Address Table
# /** Format: `A(t(6))`
# *
# * This property provides all multicast addresses.
# */
SPINEL_PROP_IPV6_MULTICAST_ADDRESS_TABLE = 102
#< [b]
SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD_MODE = 103
SPINEL_PROP_IPV6__END = 112
SPINEL_PROP_IPV6_EXT__BEGIN = 5632
SPINEL_PROP_IPV6_EXT__END = 5888
SPINEL_PROP_STREAM__BEGIN = 112
# Debug Stream
# /** Format: `U` (stream, read only)
# *
# * This property is a streaming property, meaning that you cannot explicitly
# * fetch the value of this property. The stream provides human-readable debugging
# * output which may be displayed in the host logs.
# *
# * The location of newline characters is not assumed by the host: it is
# * the NCP's responsibility to insert newline characters where needed,
# * just like with any other text stream.
# *
# * To receive the debugging stream, you wait for `CMD_PROP_VALUE_IS`
# * commands for this property from the NCP.
# */
SPINEL_PROP_STREAM_DEBUG = 112
# Raw Stream
# /** Format: `dD` (stream, read only)
# * Required Capability: SPINEL_CAP_MAC_RAW or SPINEL_CAP_CONFIG_RADIO
# *
# * This stream provides the capability of sending and receiving raw 15.4 frames
# * to and from the radio. The exact format of the frame metadata and data is
# * dependent on the MAC and PHY being used.
# *
# * This property is a streaming property, meaning that you cannot explicitly
# * fetch the value of this property. To receive traffic, you wait for
# * `CMD_PROP_VALUE_IS` commands with this property id from the NCP.
# *
# * The general format of this property is:
# *
# * `d` : frame data
# * `D` : frame meta data
# *
# * The frame meta data is optional. Frame metadata MAY be empty or partially
# * specified. Partially specified metadata MUST be accepted. Default values
# * are used for all unspecified fields.
# *
# * The frame metadata field consists of the following fields:
# *
# * `c` : Received Signal Strength (RSSI) in dBm - default is -128
# * `c` : Noise floor in dBm - default is -128
# * `S` : Flags (see below).
# * `d` : PHY-specific data/struct
# * `d` : Vendor-specific data/struct
# *
# * Flags fields are defined by the following enumeration bitfields:
# *
# * SPINEL_MD_FLAG_TX = 0x0001 : Packet was transmitted, not received.
# * SPINEL_MD_FLAG_BAD_FCS = 0x0004 : Packet was received with bad FCS
# * SPINEL_MD_FLAG_DUPE = 0x0008 : Packet seems to be a duplicate
# * SPINEL_MD_FLAG_RESERVED = 0xFFF2 : Flags reserved for future use.
# *
# * The format of PHY-specific data for a Thread device contains the following
# * optional fields:
#
# * `C` : 802.15.4 channel
# * `C` : IEEE 802.15.4 LQI
# * `X` : The timestamp in microseconds
# *
# * Frames written to this stream with `CMD_PROP_VALUE_SET` will be sent out
# * over the radio. This allows the caller to use the radio directly.
# *
# * The frame meta data for the `CMD_PROP_VALUE_SET` contains the following
# * fields. Default values are used for all unspecified fields.
# *
# * `C` : Channel (for frame tx) - MUST be included.
# * `C` : Maximum number of backoffs attempts before declaring CCA failure
# * (use Thread stack default if not specified)
# * `C` : Maximum number of retries allowed after a transmission failure
# * (use Thread stack default if not specified)
# * `b` : Set to true to enable CSMA-CA for this packet, false otherwise.
# * (default true).
# * `b` : Set to true to indicate if header is updated - related to
# * `mIsHeaderUpdated` in `otRadioFrame` (default false).
# * `b` : Set to true to indicate it is a retransmission - related to
# * `mIsARetx` in `otRadioFrame` (default false).
# * `b` : Set to true to indicate security was processed on tx frame
# * `mIsSecurityProcessed` in `otRadioFrame` (default false).
# * `L` : TX delay interval used for CSL - related to `mTxDelay` in
# * `otRadioFrame` (default zero).
# * `L` : TX delay based time used for CSL - related to `mTxDelayBaseTime`
# * in `otRadioFrame` (default zero).
# * `C` : RX channel after TX done (default assumed to be same as
# * channel in metadata)
# */
SPINEL_PROP_STREAM_RAW = 113
# (IPv6) Network Stream
# /** Format: `dD` (stream, read only)
# *
# * This stream provides the capability of sending and receiving (IPv6)
# * data packets to and from the currently attached network. The packets
# * are sent or received securely (encryption and authentication).
# *
# * This property is a streaming property, meaning that you cannot explicitly
# * fetch the value of this property. To receive traffic, you wait for
# * `CMD_PROP_VALUE_IS` commands with this property id from the NCP.
# *
# * To send network packets, you call `CMD_PROP_VALUE_SET` on this property with
# * the value of the packet.
# *
# * The general format of this property is:
# *
# * `d` : packet data
# * `D` : packet meta data
# *
# * The packet metadata is optional. Packet meta data MAY be empty or partially
# * specified. Partially specified metadata MUST be accepted. Default values
# * are used for all unspecified fields.
# *
# * For OpenThread the meta data is currently empty.
# */
SPINEL_PROP_STREAM_NET = 114
# (IPv6) Network Stream Insecure
# /** Format: `dD` (stream, read only)
# *
# * This stream provides the capability of sending and receiving unencrypted
# * and unauthenticated data packets to and from nearby devices for the
# * purposes of device commissioning.
# *
# * This property is a streaming property, meaning that you cannot explicitly
# * fetch the value of this property. To receive traffic, you wait for
# * `CMD_PROP_VALUE_IS` commands with this property id from the NCP.
# *
# * To send network packets, you call `CMD_PROP_VALUE_SET` on this property with
# * the value of the packet.
# *
# * The general format of this property is:
# *
# * `d` : packet data
# * `D` : packet meta data
# *
# * The packet metadata is optional. Packet meta data MAY be empty or partially
# * specified. Partially specified metadata MUST be accepted. Default values
# * are used for all unspecified fields.
# *
# * For OpenThread the meta data is currently empty.
# */
SPINEL_PROP_STREAM_NET_INSECURE = 115
# Log Stream
# /** Format: `UD` (stream, read only)
# *
# * This property is a read-only streaming property which provides
# * formatted log string from NCP. This property provides asynchronous
# * `CMD_PROP_VALUE_IS` updates with a new log string and includes
# * optional meta data.
# *
# * `U`: The log string
# * `D`: Log metadata (optional).
# *
# * Any data after the log string is considered metadata and is OPTIONAL.
# * Presence of `SPINEL_CAP_OPENTHREAD_LOG_METADATA` capability
# * indicates that OpenThread log metadata format is used as defined
# * below:
# *
# * `C`: Log level (as per definition in enumeration
# * `SPINEL_NCP_LOG_LEVEL_<level>`)
# * `i`: OpenThread Log region (as per definition in enumeration
# * `SPINEL_NCP_LOG_REGION_<region>).
# * `X`: Log timestamp = <timestamp_base> + <current_time_ms>
# */
SPINEL_PROP_STREAM_LOG = 116
# CLI Stream
# /** Format: `U` - Set (Host to NCP) and Unsolicited Notifications (NCP to Host)
# *
# * This streaming property provides a bidirectional channel for interacting with the NCP's
# * command-line interface (CLI).
# *
# * The host can send CLI commands to the NCP by setting this property. The NCP will then
# * execute the commands. The NCP will send the output of the executed command (if any) back to
# * the host via unsolicited notifications of this same property.
# *
# * Both the input command string (from host) and the output string (from NCP) are
# * zero-terminated UTF-8 encoded strings.
# */
SPINEL_PROP_STREAM_CLI = 117
# CLI Stream
# /** Format: `U` - Set (Host to NCP) and Unsolicited Notifications (NCP to Host)
# *
# * This streaming property provides a bidirectional channel for interacting with the NCP's
# * command-line interface (CLI).
# *
# * The host can send CLI commands to the NCP by setting this property. The NCP will then
# * execute the commands. The NCP will send the output of the executed command (if any) back to
# * the host via unsolicited notifications of this same property.
# *
# * Both the input command string (from host) and the output string (from NCP) are
# * zero-terminated UTF-8 encoded strings.
# */
SPINEL_PROP_STREAM__END = 128
# CLI Stream
# /** Format: `U` - Set (Host to NCP) and Unsolicited Notifications (NCP to Host)
# *
# * This streaming property provides a bidirectional channel for interacting with the NCP's
# * command-line interface (CLI).
# *
# * The host can send CLI commands to the NCP by setting this property. The NCP will then
# * execute the commands. The NCP will send the output of the executed command (if any) back to
# * the host via unsolicited notifications of this same property.
# *
# * Both the input command string (from host) and the output string (from NCP) are
# * zero-terminated UTF-8 encoded strings.
# */
SPINEL_PROP_STREAM_EXT__BEGIN = 5888
# CLI Stream
# /** Format: `U` - Set (Host to NCP) and Unsolicited Notifications (NCP to Host)
# *
# * This streaming property provides a bidirectional channel for interacting with the NCP's
# * command-line interface (CLI).
# *
# * The host can send CLI commands to the NCP by setting this property. The NCP will then
# * execute the commands. The NCP will send the output of the executed command (if any) back to
# * the host via unsolicited notifications of this same property.
# *
# * Both the input command string (from host) and the output string (from NCP) are
# * zero-terminated UTF-8 encoded strings.
# */
SPINEL_PROP_STREAM_EXT__END = 6144
# CLI Stream
# /** Format: `U` - Set (Host to NCP) and Unsolicited Notifications (NCP to Host)
# *
# * This streaming property provides a bidirectional channel for interacting with the NCP's
# * command-line interface (CLI).
# *
# * The host can send CLI commands to the NCP by setting this property. The NCP will then
# * execute the commands. The NCP will send the output of the executed command (if any) back to
# * the host via unsolicited notifications of this same property.
# *
# * Both the input command string (from host) and the output string (from NCP) are
# * zero-terminated UTF-8 encoded strings.
# */
SPINEL_PROP_MESHCOP__BEGIN = 128
#<[C]
SPINEL_PROP_MESHCOP_JOINER_STATE = 128
# Thread Joiner Commissioning command and the parameters
# /** Format `b` or `bU(UUUUU)` (fields in parenthesis are optional) - Write Only
# *
# * This property starts or stops Joiner's commissioning process
# *
# * Required capability: SPINEL_CAP_THREAD_JOINER
# *
# * Writing to this property starts/stops the Joiner commissioning process.
# * The immediate `VALUE_IS` response indicates success/failure of the starting/stopping
# * the Joiner commissioning process.
# *
# * After a successful start operation, the join process outcome is reported through an
# * asynchronous `VALUE_IS(LAST_STATUS)` update with one of the following error status values:
# *
# * - SPINEL_STATUS_JOIN_SUCCESS the join process succeeded.
# * - SPINEL_STATUS_JOIN_SECURITY the join process failed due to security credentials.
# * - SPINEL_STATUS_JOIN_NO_PEERS no joinable network was discovered.
# * - SPINEL_STATUS_JOIN_RSP_TIMEOUT if a response timed out.
# * - SPINEL_STATUS_JOIN_FAILURE join failure.
# *
# * Frame format:
# *
# * `b` : Start or stop commissioning process (true to start).
# *
# * Only if the start commissioning.
# *
# * `U` : Joiner's PSKd.
# *
# * The next fields are all optional. If not provided, OpenThread default values would be used.
# *
# * `U` : Provisioning URL (use empty string if not required).
# * `U` : Vendor Name. If not specified or empty string, use OpenThread default (PACKAGE_NAME).
# * `U` : Vendor Model. If not specified or empty string, use OpenThread default (OPENTHREAD_CONFIG_PLATFORM_INFO).
# * `U` : Vendor Sw Version. If not specified or empty string, use OpenThread default (PACKAGE_VERSION).
# * `U` : Vendor Data String. Will not be appended if not specified.
# */
SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING = 129
# Format `C`
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * The valid values are specified by SPINEL_MESHCOP_COMMISSIONER_STATE_<state> enumeration.
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_STATE = 130
# Format `A(t(t(E|CX)UL))` - get, insert or remove.
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * Data per array entry is:
# *
# * `t()` | `t(E)` | `t(CX)` : Joiner info struct (formatting varies).
# *
# * - `t()` or empty struct indicates any joiner.
# * - `t(E)` specifies the Joiner EUI-64.
# * - `t(CX) specifies Joiner Discerner, `C` is Discerner length (in bits), and `X` is Discerner value.
# *
# * The struct is followed by:
# *
# * `L` : Timeout after which to remove Joiner (when written should be in seconds, when read is in milliseconds)
# * `U` : PSKd
# *
# * For CMD_PROP_VALUE_REMOVE the timeout and PSKd are optional.
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_JOINERS = 131
# Format `U`
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_PROVISIONING_URL = 132
# Format `S` - Read only
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_SESSION_ID = 133
# Thread Joiner Discerner
# /** Format `CX` - Read-write
# *
# * Required capability: SPINEL_CAP_THREAD_JOINER
# *
# * This property represents a Joiner Discerner.
# *
# * The Joiner Discerner is used to calculate the Joiner ID used during commissioning/joining process.
# *
# * By default (when a discerner is not provided or cleared), Joiner ID is derived as first 64 bits of the result
# * of computing SHA-256 over factory-assigned IEEE EUI-64. Note that this is the main behavior expected by Thread
# * specification.
# *
# * Format:
# *
# * 'C' : The Joiner Discerner bit length (number of bits).
# * `X` : The Joiner Discerner value (64-bit unsigned) - Only present/applicable when length is non-zero.
# *
# * When writing to this property, the length can be set to zero to clear any previously set Joiner Discerner value.
# *
# * When reading this property if there is no currently set Joiner Discerner, zero is returned as the length (with
# * no value field).
# */
SPINEL_PROP_MESHCOP_JOINER_DISCERNER = 134
# Thread Joiner Discerner
# /** Format `CX` - Read-write
# *
# * Required capability: SPINEL_CAP_THREAD_JOINER
# *
# * This property represents a Joiner Discerner.
# *
# * The Joiner Discerner is used to calculate the Joiner ID used during commissioning/joining process.
# *
# * By default (when a discerner is not provided or cleared), Joiner ID is derived as first 64 bits of the result
# * of computing SHA-256 over factory-assigned IEEE EUI-64. Note that this is the main behavior expected by Thread
# * specification.
# *
# * Format:
# *
# * 'C' : The Joiner Discerner bit length (number of bits).
# * `X` : The Joiner Discerner value (64-bit unsigned) - Only present/applicable when length is non-zero.
# *
# * When writing to this property, the length can be set to zero to clear any previously set Joiner Discerner value.
# *
# * When reading this property if there is no currently set Joiner Discerner, zero is returned as the length (with
# * no value field).
# */
SPINEL_PROP_MESHCOP__END = 144
# Thread Joiner Discerner
# /** Format `CX` - Read-write
# *
# * Required capability: SPINEL_CAP_THREAD_JOINER
# *
# * This property represents a Joiner Discerner.
# *
# * The Joiner Discerner is used to calculate the Joiner ID used during commissioning/joining process.
# *
# * By default (when a discerner is not provided or cleared), Joiner ID is derived as first 64 bits of the result
# * of computing SHA-256 over factory-assigned IEEE EUI-64. Note that this is the main behavior expected by Thread
# * specification.
# *
# * Format:
# *
# * 'C' : The Joiner Discerner bit length (number of bits).
# * `X` : The Joiner Discerner value (64-bit unsigned) - Only present/applicable when length is non-zero.
# *
# * When writing to this property, the length can be set to zero to clear any previously set Joiner Discerner value.
# *
# * When reading this property if there is no currently set Joiner Discerner, zero is returned as the length (with
# * no value field).
# */
SPINEL_PROP_MESHCOP_EXT__BEGIN = 6144
# Format `LCS6` - Write only
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * Writing to this property sends an Announce Begin message with the specified parameters. Response is a
# * `LAST_STATUS` update with status of operation.
# *
# * `L` : Channel mask
# * `C` : Number of messages per channel
# * `S` : The time between two successive MLE Announce transmissions (milliseconds)
# * `6` : IPv6 destination
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_ANNOUNCE_BEGIN = 6144
# Format `LCSS6` - Write only
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * Writing to this property sends an Energy Scan Query message with the specified parameters. Response is a
# * `LAST_STATUS` with status of operation. The energy scan results are emitted asynchronously through
# * `SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN_RESULT` updates.
# *
# * Format is:
# *
# * `L` : Channel mask
# * `C` : The number of energy measurements per channel
# * `S` : The time between energy measurements (milliseconds)
# * `S` : The scan duration for each energy measurement (milliseconds)
# * `6` : IPv6 destination.
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN = 6145
# Format `Ld` - Asynchronous event only
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * This property provides asynchronous `CMD_PROP_VALUE_INSERTED` updates to report energy scan results for a
# * previously sent Energy Scan Query message (please see `SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN`).
# *
# * Format is:
# *
# * `L` : Channel mask
# * `d` : Energy measurement data (note that `d` encoding includes the length)
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN_RESULT = 6146
# Format `SL6` - Write only
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * Writing to this property sends a PAN ID Query message with the specified parameters. Response is a
# * `LAST_STATUS` with status of operation. The PAN ID Conflict results are emitted asynchronously through
# * `SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_CONFLICT_RESULT` updates.
# *
# * Format is:
# *
# * `S` : PAN ID to query
# * `L` : Channel mask
# * `6` : IPv6 destination
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_QUERY = 6147
# Format `SL` - Asynchronous event only
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * This property provides asynchronous `CMD_PROP_VALUE_INSERTED` updates to report PAN ID conflict results for a
# * previously sent PAN ID Query message (please see `SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_QUERY`).
# *
# * Format is:
# *
# * `S` : The PAN ID
# * `L` : Channel mask
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_CONFLICT_RESULT = 6148
# Format `d` - Write only
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * Writing to this property sends a MGMT_COMMISSIONER_GET message with the specified parameters. Response is a
# * `LAST_STATUS` with status of operation.
# *
# * Format is:
# *
# * `d` : List of TLV types to get
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_MGMT_GET = 6149
# Format `d` - Write only
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * Writing to this property sends a MGMT_COMMISSIONER_SET message with the specified parameters. Response is a
# * `LAST_STATUS` with status of operation.
# *
# * Format is:
# *
# * `d` : TLV encoded data
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_MGMT_SET = 6150
# Format: `UUd` - Write only
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * Writing to this property allows user to generate PSKc from a given commissioning pass-phrase, network name,
# * extended PAN Id.
# *
# * Written value format is:
# *
# * `U` : The commissioning pass-phrase.
# * `U` : Network Name.
# * `d` : Extended PAN ID.
# *
# * The response on success would be a `VALUE_IS` command with the PSKc with format below:
# *
# * `D` : The PSKc
# *
# * On a failure a `LAST_STATUS` is emitted with the error status.
# */
SPINEL_PROP_MESHCOP_COMMISSIONER_GENERATE_PSKC = 6151
# Format: `UUd` - Write only
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * Writing to this property allows user to generate PSKc from a given commissioning pass-phrase, network name,
# * extended PAN Id.
# *
# * Written value format is:
# *
# * `U` : The commissioning pass-phrase.
# * `U` : Network Name.
# * `d` : Extended PAN ID.
# *
# * The response on success would be a `VALUE_IS` command with the PSKc with format below:
# *
# * `D` : The PSKc
# *
# * On a failure a `LAST_STATUS` is emitted with the error status.
# */
SPINEL_PROP_MESHCOP_EXT__END = 6400
# Format: `UUd` - Write only
# *
# * Required capability: SPINEL_CAP_THREAD_COMMISSIONER
# *
# * Writing to this property allows user to generate PSKc from a given commissioning pass-phrase, network name,
# * extended PAN Id.
# *
# * Written value format is:
# *
# * `U` : The commissioning pass-phrase.
# * `U` : Network Name.
# * `d` : Extended PAN ID.
# *
# * The response on success would be a `VALUE_IS` command with the PSKc with format below:
# *
# * `D` : The PSKc
# *
# * On a failure a `LAST_STATUS` is emitted with the error status.
# */
SPINEL_PROP_OPENTHREAD__BEGIN = 6400
# Channel Manager - Channel Change New Channel
# /** Format: `C` (read-write)
# *
# * Required capability: SPINEL_CAP_CHANNEL_MANAGER
# *
# * Setting this property triggers the Channel Manager to start
# * a channel change process. The network switches to the given
# * channel after the specified delay (see `CHANNEL_MANAGER_DELAY`).
# *
# * A subsequent write to this property will cancel an ongoing
# * (previously requested) channel change.
# */
SPINEL_PROP_CHANNEL_MANAGER_NEW_CHANNEL = 6400
# Channel Manager - Channel Change Delay
# /** Format 'S'
# * Units: seconds
# *
# * Required capability: SPINEL_CAP_CHANNEL_MANAGER
# *
# * This property specifies the delay (in seconds) to be used for
# * a channel change request.
# *
# * The delay should preferably be longer than maximum data poll
# * interval used by all sleepy-end-devices within the Thread
# * network.
# */
SPINEL_PROP_CHANNEL_MANAGER_DELAY = 6401
# Channel Manager Supported Channels
# /** Format 'A(C)'
# *
# * Required capability: SPINEL_CAP_CHANNEL_MANAGER
# *
# * This property specifies the list of supported channels.
# */
SPINEL_PROP_CHANNEL_MANAGER_SUPPORTED_CHANNELS = 6402
# Channel Manager Favored Channels
# /** Format 'A(C)'
# *
# * Required capability: SPINEL_CAP_CHANNEL_MANAGER
# *
# * This property specifies the list of favored channels (when `ChannelManager` is asked to select channel)
# */
SPINEL_PROP_CHANNEL_MANAGER_FAVORED_CHANNELS = 6403
# Channel Manager Channel Select Trigger
# /** Format 'b'
# *
# * Required capability: SPINEL_CAP_CHANNEL_MANAGER
# *
# * Writing to this property triggers a request on `ChannelManager` to select a new channel.
# *
# * Once a Channel Select is triggered, the Channel Manager will perform the following 3 steps:
# *
# * 1) `ChannelManager` decides if the channel change would be helpful. This check can be skipped if in the input
# * boolean to this property is set to `true` (skipping the quality check).
# * This step uses the collected link quality metrics on the device such as CCA failure rate, frame and message
# * error rates per neighbor, etc. to determine if the current channel quality is at the level that justifies
# * a channel change.
# *
# * 2) If first step passes, then `ChannelManager` selects a potentially better channel. It uses the collected
# * channel quality data by `ChannelMonitor` module. The supported and favored channels are used at this step.
# *
# * 3) If the newly selected channel is different from the current channel, `ChannelManager` requests/starts the
# * channel change process.
# *
# * Reading this property always yields `false`.
# */
SPINEL_PROP_CHANNEL_MANAGER_CHANNEL_SELECT = 6404
# Channel Manager Auto Channel Selection Enabled
# /** Format 'b'
# *
# * Required capability: SPINEL_CAP_CHANNEL_MANAGER
# *
# * This property indicates if auto-channel-selection functionality is enabled/disabled on `ChannelManager`.
# *
# * When enabled, `ChannelManager` will periodically checks and attempts to select a new channel. The period interval
# * is specified by `SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_INTERVAL`.
# */
SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_ENABLED = 6405
# Channel Manager Auto Channel Selection Interval
# /** Format 'L'
# * units: seconds
# *
# * Required capability: SPINEL_CAP_CHANNEL_MANAGER
# *
# * This property specifies the auto-channel-selection check interval (in seconds).
# */
SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_INTERVAL = 6406
# Thread network time.
# /** Format: `Xc` - Read only
# *
# * Data per item is:
# *
# * `X`: The Thread network time, in microseconds.
# * `c`: Time synchronization status.
# */
SPINEL_PROP_THREAD_NETWORK_TIME = 6407
# Thread time synchronization period
# /** Format: `S` - Read-Write
# *
# * Data per item is:
# *
# * `S`: Time synchronization period, in seconds.
# */
SPINEL_PROP_TIME_SYNC_PERIOD = 6408
# Thread Time synchronization XTAL accuracy threshold for Router
# /** Format: `S` - Read-Write
# *
# * Data per item is:
# *
# * `S`: The XTAL accuracy threshold for Router, in PPM.
# */
SPINEL_PROP_TIME_SYNC_XTAL_THRESHOLD = 6409
# Child Supervision Interval
# /** Format: `S` - Read-Write
# * Units: Seconds
# *
# * Required capability: `SPINEL_CAP_CHILD_SUPERVISION`
# *
# * The child supervision interval (in seconds). Zero indicates that child supervision is disabled.
# *
# * When enabled, Child supervision feature ensures that at least one message is sent to every sleepy child within
# * the given supervision interval. If there is no other message, a supervision message (a data message with empty
# * payload) is enqueued and sent to the child.
# *
# * This property is available for FTD build only.
# */
SPINEL_PROP_CHILD_SUPERVISION_INTERVAL = 6410
# Child Supervision Check Timeout
# /** Format: `S` - Read-Write
# * Units: Seconds
# *
# * Required capability: `SPINEL_CAP_CHILD_SUPERVISION`
# *
# * The child supervision check timeout interval (in seconds). Zero indicates supervision check on the child is
# * disabled.
# *
# * Supervision check is only applicable on a sleepy child. When enabled, if the child does not hear from its parent
# * within the specified check timeout, it initiates a re-attach process by starting an MLE Child Update
# * Request/Response exchange with the parent.
# *
# * This property is available for FTD and MTD builds.
# */
SPINEL_PROP_CHILD_SUPERVISION_CHECK_TIMEOUT = 6411
# Format `U` - Read only
# *
# * Required capability: SPINEL_CAP_POSIX
# *
# * This property gives the version string of RCP (NCP in radio mode) which is being controlled by a POSIX
# * application. It is available only in "POSIX" platform (i.e., `OPENTHREAD_PLATFORM_POSIX` is enabled).
# */
SPINEL_PROP_RCP_VERSION = 6412
# Thread Parent Response info
# /** Format: `ESccCCCb` - Asynchronous event only
# *
# * `E`: Extended address
# * `S`: RLOC16
# * `c`: Instant RSSI
# * 'c': Parent Priority
# * `C`: Link Quality3
# * `C`: Link Quality2
# * `C`: Link Quality1
# * 'b': Is the node receiving parent response frame attached
# *
# * This property sends Parent Response frame information to the Host.
# * This property is available for FTD build only.
# */
SPINEL_PROP_PARENT_RESPONSE_INFO = 6413
# SLAAC enabled
# /** Format `b` - Read-Write
# * Required capability: `SPINEL_CAP_SLAAC`
# *
# * This property allows the host to enable/disable SLAAC module on NCP at run-time. When SLAAC module is enabled,
# * SLAAC addresses (based on on-mesh prefixes in Network Data) are added to the interface. When SLAAC module is
# * disabled any previously added SLAAC address is removed.
# */
SPINEL_PROP_SLAAC_ENABLED = 6414
#
# * Format `A(i)` - Read only
# *
# * This property returns list of supported radio links by the device itself. Enumeration `SPINEL_RADIO_LINK_{TYPE}`
# * values indicate different radio link types.
# */
SPINEL_PROP_SUPPORTED_RADIO_LINKS = 6415
# Neighbor Table Multi Radio Link Info
# /** Format: `A(t(ESA(t(iC))))` - Read only
# * Required capability: `SPINEL_CAP_MULTI_RADIO`.
# *
# * Each item represents info about a neighbor:
# *
# * `E`: Neighbor's Extended Address
# * `S`: Neighbor's RLOC16
# *
# * This is then followed by an array of radio link info structures indicating which radio links are supported by
# * the neighbor:
# *
# * `i` : Radio link type (enumeration `SPINEL_RADIO_LINK_{TYPE}`).
# * `C` : Preference value associated with radio link.
# */
SPINEL_PROP_NEIGHBOR_TABLE_MULTI_RADIO_INFO = 6416
# SRP Client Start
# /** Format: `b(6Sb)` - Write only
# * Required capability: `SPINEL_CAP_SRP_CLIENT`.
# *
# * Writing to this property allows user to start or stop the SRP client operation with a given SRP server.
# *
# * Written value format is:
# *
# * `b` : TRUE to start the client, FALSE to stop the client.
# *
# * When used to start the SRP client, the following fields should also be included:
# *
# * `6` : SRP server IPv6 address.
# * `U` : SRP server port number.
# * `b` : Boolean to indicate whether or not to emit SRP client events (using `SPINEL_PROP_SRP_CLIENT_EVENT`).
# */
SPINEL_PROP_SRP_CLIENT_START = 6417
# SRP Client Lease Interval
# /** Format: `L` - Read/Write
# * Required capability: `SPINEL_CAP_SRP_CLIENT`.
# *
# * The lease interval used in SRP update requests (in seconds).
# */
SPINEL_PROP_SRP_CLIENT_LEASE_INTERVAL = 6418
# SRP Client Key Lease Interval
# /** Format: `L` - Read/Write
# * Required capability: `SPINEL_CAP_SRP_CLIENT`.
# *
# * The key lease interval used in SRP update requests (in seconds).
# */
SPINEL_PROP_SRP_CLIENT_KEY_LEASE_INTERVAL = 6419
# SRP Client Host Info
# /** Format: `UCt(A(6))` - Read only
# * Required capability: `SPINEL_CAP_SRP_CLIENT`.
# *
# * Format is:
# *
# * `U` : The host name.
# * `C` : The host state (values from `spinel_srp_client_item_state_t`).
# * `t(A(6))` : Structure containing array of host IPv6 addresses.
# */
SPINEL_PROP_SRP_CLIENT_HOST_INFO = 6420
# SRP Client Host Name (label).
# /** Format: `U` - Read/Write
# * Required capability: `SPINEL_CAP_SRP_CLIENT`.
# */
SPINEL_PROP_SRP_CLIENT_HOST_NAME = 6421
# SRP Client Host Addresses
# /** Format: `A(6)` - Read/Write
# * Required capability: `SPINEL_CAP_SRP_CLIENT`.
# */
SPINEL_PROP_SRP_CLIENT_HOST_ADDRESSES = 6422
# SRP Client Services
# /** Format: `A(t(UUSSSd))` - Read/Insert/Remove
# * Required capability: `SPINEL_CAP_SRP_CLIENT`.
# *
# * This property provides a list/array of services.
# *
# * Data per item for `SPINEL_CMD_PROP_VALUE_GET` and/or `SPINEL_CMD_PROP_VALUE_INSERT` operation is as follows:
# *
# * `U` : The service name labels (e.g., "_chip._udp", not the full domain name.
# * `U` : The service instance name label (not the full name).
# * `S` : The service port number.
# * `S` : The service priority.
# * `S` : The service weight.
# *
# * For `SPINEL_CMD_PROP_VALUE_REMOVE` command, the following format is used:
# *
# * `U` : The service name labels (e.g., "_chip._udp", not the full domain name.
# * `U` : The service instance name label (not the full name).
# * `b` : Indicates whether to clear the service entry (optional).
# *
# * The last boolean (`b`) field is optional. When included it indicates on `true` to clear the service (clear it
# * on client immediately with no interaction to server) and on `false` to remove the service (inform server and
# * wait for the service entry to be removed on server). If it is not included, the value is `false`.
# */
SPINEL_PROP_SRP_CLIENT_SERVICES = 6423
# SRP Client Host And Services Remove
# /** Format: `bb` : Write only
# * Required capability: `SPINEL_CAP_SRP_CLIENT`.
# *
# * Writing to this property with starts the remove process of the host info and all services.
# * Please see `otSrpClientRemoveHostAndServices()` for more details.
# *
# * Format is:
# *
# * `b` : A boolean indicating whether or not the host key lease should also be cleared.
# * `b` : A boolean indicating whether or not to send update to server when host info is not registered.
# */
SPINEL_PROP_SRP_CLIENT_HOST_SERVICES_REMOVE = 6424
# SRP Client Host And Services Clear
# /** Format: Empty : Write only
# * Required capability: `SPINEL_CAP_SRP_CLIENT`.
# *
# * Writing to this property clears all host info and all the services.
# * Please see `otSrpClientClearHostAndServices()` for more details.
# */
SPINEL_PROP_SRP_CLIENT_HOST_SERVICES_CLEAR = 6425
# SRP Client Event
# /** Format: t() : Asynchronous event only
# * Required capability: `SPINEL_CAP_SRP_CLIENT`.
# *
# * This property is asynchronously emitted when there is an event from SRP client notifying some state changes or
# * errors.
# *
# * The general format of this property is as follows:
# *
# * `S` : Error code (see `spinel_srp_client_error_t` enumeration).
# * `d` : Host info data.
# * `d` : Active services.
# * `d` : Removed services.
# *
# * The host info data contains:
# *
# * `U` : The host name.
# * `C` : The host state (values from `spinel_srp_client_item_state_t`).
# * `t(A(6))` : Structure containing array of host IPv6 addresses.
# *
# * The active or removed services data is an array of services `A(t(UUSSSd))` with each service format:
# *
# * `U` : The service name labels (e.g., "_chip._udp", not the full domain name.
# * `U` : The service instance name label (not the full name).
# * `S` : The service port number.
# * `S` : The service priority.
# * `S` : The service weight.
# * `d` : The encoded TXT-DATA.
# */
SPINEL_PROP_SRP_CLIENT_EVENT = 6426
# SRP Client Service Key Inclusion Enabled
# /** Format `b` : Read-Write
# * Required capability: `SPINEL_CAP_SRP_CLIENT` & `SPINEL_CAP_REFERENCE_DEVICE`.
# *
# * This boolean property indicates whether the "service key record inclusion" mode is enabled or not.
# *
# * When enabled, SRP client will include KEY record in Service Description Instructions in the SRP update messages
# * that it sends.
# *
# * KEY record is optional in Service Description Instruction (it is required and always included in the Host
# * Description Instruction). The default behavior of SRP client is to not include it. This function is intended to
# * override the default behavior for testing only.
# */
SPINEL_PROP_SRP_CLIENT_SERVICE_KEY_ENABLED = 6427
# SRP Client Service Key Inclusion Enabled
# /** Format `b` : Read-Write
# * Required capability: `SPINEL_CAP_SRP_CLIENT` & `SPINEL_CAP_REFERENCE_DEVICE`.
# *
# * This boolean property indicates whether the "service key record inclusion" mode is enabled or not.
# *
# * When enabled, SRP client will include KEY record in Service Description Instructions in the SRP update messages
# * that it sends.
# *
# * KEY record is optional in Service Description Instruction (it is required and always included in the Host
# * Description Instruction). The default behavior of SRP client is to not include it. This function is intended to
# * override the default behavior for testing only.
# */
SPINEL_PROP_OPENTHREAD__END = 8192
# SRP Client Service Key Inclusion Enabled
# /** Format `b` : Read-Write
# * Required capability: `SPINEL_CAP_SRP_CLIENT` & `SPINEL_CAP_REFERENCE_DEVICE`.
# *
# * This boolean property indicates whether the "service key record inclusion" mode is enabled or not.
# *
# * When enabled, SRP client will include KEY record in Service Description Instructions in the SRP update messages
# * that it sends.
# *
# * KEY record is optional in Service Description Instruction (it is required and always included in the Host
# * Description Instruction). The default behavior of SRP client is to not include it. This function is intended to
# * override the default behavior for testing only.
# */
SPINEL_PROP_SERVER__BEGIN = 160
# Server Allow Local Network Data Change
# /** Format `b` - Read-write
# *
# * Required capability: SPINEL_CAP_THREAD_SERVICE
# *
# * Set to true before changing local server net data. Set to false when finished.
# * This allows changes to be aggregated into a single event.
# */
SPINEL_PROP_SERVER_ALLOW_LOCAL_DATA_CHANGE = 160
# Format: `A(t(LdbdS))`
# *
# * This property provides all services registered on the device
# *
# * Required capability: SPINEL_CAP_THREAD_SERVICE
# *
# * Array of structures containing:
# *
# * `L`: Enterprise Number
# * `d`: Service Data
# * `b`: Stable
# * `d`: Server Data
# * `S`: RLOC
# */
SPINEL_PROP_SERVER_SERVICES = 161
# Format: `A(t(CLdbdS))`
# *
# * This property provides all services registered on the leader
# *
# * Array of structures containing:
# *
# * `C`: Service ID
# * `L`: Enterprise Number
# * `d`: Service Data
# * `b`: Stable
# * `d`: Server Data
# * `S`: RLOC
# */
SPINEL_PROP_SERVER_LEADER_SERVICES = 162
# Format: `A(t(CLdbdS))`
# *
# * This property provides all services registered on the leader
# *
# * Array of structures containing:
# *
# * `C`: Service ID
# * `L`: Enterprise Number
# * `d`: Service Data
# * `b`: Stable
# * `d`: Server Data
# * `S`: RLOC
# */
SPINEL_PROP_SERVER__END = 176
# Format: `A(t(CLdbdS))`
# *
# * This property provides all services registered on the leader
# *
# * Array of structures containing:
# *
# * `C`: Service ID
# * `L`: Enterprise Number
# * `d`: Service Data
# * `b`: Stable
# * `d`: Server Data
# * `S`: RLOC
# */
SPINEL_PROP_RCP__BEGIN = 176
# RCP API Version number
# /** Format: `i` (read-only)
# *
# * Required capability: SPINEL_CAP_RADIO and SPINEL_CAP_RCP_API_VERSION.
# *
# * This property gives the RCP API Version number.
# *
# * Please see "Spinel definition compatibility guideline" section.
# */
SPINEL_PROP_RCP_API_VERSION = 176
# Min host RCP API Version number
# /** Format: `i` (read-only)
# *
# * Required capability: SPINEL_CAP_RADIO and SPINEL_CAP_RCP_MIN_HOST_API_VERSION.
# *
# * This property gives the minimum host RCP API Version number.
# *
# * Please see "Spinel definition compatibility guideline" section.
# */
SPINEL_PROP_RCP_MIN_HOST_API_VERSION = 177
# Crash Dump
# /** Format: Empty : Write only
# *
# * Required capability: SPINEL_CAP_RADIO and SPINEL_CAP_RCP_LOG_CRASH_DUMP.
# *
# * Writing to this property instructs the RCP to log a crash dump if available.
# */
SPINEL_PROP_RCP_LOG_CRASH_DUMP = 178
# Crash Dump
# /** Format: Empty : Write only
# *
# * Required capability: SPINEL_CAP_RADIO and SPINEL_CAP_RCP_LOG_CRASH_DUMP.
# *
# * Writing to this property instructs the RCP to log a crash dump if available.
# */
SPINEL_PROP_RCP__END = 255
# Crash Dump
# /** Format: Empty : Write only
# *
# * Required capability: SPINEL_CAP_RADIO and SPINEL_CAP_RCP_LOG_CRASH_DUMP.
# *
# * Writing to this property instructs the RCP to log a crash dump if available.
# */
SPINEL_PROP_INTERFACE__BEGIN = 256
# UART Bitrate
# /** Format: `L`
# *
# * If the NCP is using a UART to communicate with the host,
# * this property allows the host to change the bitrate
# * of the serial connection. The value encoding is `L`,
# * which is a little-endian 32-bit unsigned integer.
# * The host should not assume that all possible numeric values
# * are supported.
# *
# * If implemented by the NCP, this property should be persistent
# * across software resets and forgotten upon hardware resets.
# *
# * This property is only implemented when a UART is being
# * used for Spinel. This property is optional.
# *
# * When changing the bitrate, all frames will be received
# * at the previous bitrate until the response frame to this command
# * is received. Once a successful response frame is received by
# * the host, all further frames will be transmitted at the new
# * bitrate.
# */
SPINEL_PROP_UART_BITRATE = 256
# UART Software Flow Control
# /** Format: `b`
# *
# * If the NCP is using a UART to communicate with the host,
# * this property allows the host to determine if software flow
# * control (XON/XOFF style) should be used and (optionally) to
# * turn it on or off.
# *
# * This property is only implemented when a UART is being
# * used for Spinel. This property is optional.
# */
SPINEL_PROP_UART_XON_XOFF = 257
# UART Software Flow Control
# /** Format: `b`
# *
# * If the NCP is using a UART to communicate with the host,
# * this property allows the host to determine if software flow
# * control (XON/XOFF style) should be used and (optionally) to
# * turn it on or off.
# *
# * This property is only implemented when a UART is being
# * used for Spinel. This property is optional.
# */
SPINEL_PROP_INTERFACE__END = 512
# UART Software Flow Control
# /** Format: `b`
# *
# * If the NCP is using a UART to communicate with the host,
# * this property allows the host to determine if software flow
# * control (XON/XOFF style) should be used and (optionally) to
# * turn it on or off.
# *
# * This property is only implemented when a UART is being
# * used for Spinel. This property is optional.
# */
SPINEL_PROP_15_4_PIB__BEGIN = 1024
#< [A(L)]
SPINEL_PROP_15_4_PIB_PHY_CHANNELS_SUPPORTED = 1025
#< [b]
SPINEL_PROP_15_4_PIB_MAC_PROMISCUOUS_MODE = 1105
#< [b]
SPINEL_PROP_15_4_PIB_MAC_SECURITY_ENABLED = 1117
SPINEL_PROP_15_4_PIB__END = 1280
SPINEL_PROP_CNTR__BEGIN = 1280
# Counter reset
# /** Format: Empty (Write only).
# *
# * Writing to this property (with any value) will reset all MAC, MLE, IP, and NCP counters to zero.
# */
SPINEL_PROP_CNTR_RESET = 1280
# The total number of transmissions.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_TOTAL = 1281
# The number of transmissions with ack request.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_ACK_REQ = 1282
# The number of transmissions that were acked.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_ACKED = 1283
# The number of transmissions without ack request.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_NO_ACK_REQ = 1284
# The number of transmitted data.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_DATA = 1285
# The number of transmitted data poll.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_DATA_POLL = 1286
# The number of transmitted beacon.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_BEACON = 1287
# The number of transmitted beacon request.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_BEACON_REQ = 1288
# The number of transmitted other types of frames.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_OTHER = 1289
# The number of retransmission times.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_RETRY = 1290
# The number of CCA failure times.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_ERR_CCA = 1291
# The number of unicast packets transmitted.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_UNICAST = 1292
# The number of broadcast packets transmitted.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_PKT_BROADCAST = 1293
# The number of frame transmission failures due to abort error.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_ERR_ABORT = 1294
# The total number of received packets.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_PKT_TOTAL = 1380
# The number of received data.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_PKT_DATA = 1381
# The number of received data poll.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_PKT_DATA_POLL = 1382
# The number of received beacon.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_PKT_BEACON = 1383
# The number of received beacon request.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_PKT_BEACON_REQ = 1384
# The number of received other types of frames.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_PKT_OTHER = 1385
# The number of received packets filtered by allowlist.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_PKT_FILT_WL = 1386
# The number of received packets filtered by destination check.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_PKT_FILT_DA = 1387
# The number of received packets that are empty.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_ERR_EMPTY = 1388
# The number of received packets from an unknown neighbor.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_ERR_UKWN_NBR = 1389
# The number of received packets whose source address is invalid.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_ERR_NVLD_SADDR = 1390
# The number of received packets with a security error.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_ERR_SECURITY = 1391
# The number of received packets with a checksum error.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_ERR_BAD_FCS = 1392
# The number of received packets with other errors.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_ERR_OTHER = 1393
# The number of received duplicated.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_PKT_DUP = 1394
# The number of unicast packets received.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_PKT_UNICAST = 1395
# The number of broadcast packets received.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_PKT_BROADCAST = 1396
# The total number of secure transmitted IP messages.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_IP_SEC_TOTAL = 1480
# The total number of insecure transmitted IP messages.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_IP_INSEC_TOTAL = 1481
# The number of dropped (not transmitted) IP messages.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_IP_DROPPED = 1482
# The total number of secure received IP message.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_IP_SEC_TOTAL = 1483
# The total number of insecure received IP message.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_IP_INSEC_TOTAL = 1484
# The number of dropped received IP messages.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_IP_DROPPED = 1485
# The number of transmitted spinel frames.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_TX_SPINEL_TOTAL = 1580
# The number of received spinel frames.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_SPINEL_TOTAL = 1581
# The number of received spinel frames with error.
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_SPINEL_ERR = 1582
# Number of out of order received spinel frames (tid increase by more than 1).
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_SPINEL_OUT_OF_ORDER_TID = 1583
# The number of successful Tx IP packets
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_IP_TX_SUCCESS = 1584
# The number of successful Rx IP packets
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_IP_RX_SUCCESS = 1585
# The number of failed Tx IP packets
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_IP_TX_FAILURE = 1586
# The number of failed Rx IP packets
# /** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_IP_RX_FAILURE = 1587
# The message buffer counter info
# /** Format: `SSSSSSSSSSSSSSSS` (Read-only)
# * `S`, (TotalBuffers) The number of buffers in the pool.
# * `S`, (FreeBuffers) The number of free message buffers.
# * `S`, (6loSendMessages) The number of messages in the 6lo send queue.
# * `S`, (6loSendBuffers) The number of buffers in the 6lo send queue.
# * `S`, (6loReassemblyMessages) The number of messages in the 6LoWPAN reassembly queue.
# * `S`, (6loReassemblyBuffers) The number of buffers in the 6LoWPAN reassembly queue.
# * `S`, (Ip6Messages) The number of messages in the IPv6 send queue.
# * `S`, (Ip6Buffers) The number of buffers in the IPv6 send queue.
# * `S`, (MplMessages) The number of messages in the MPL send queue.
# * `S`, (MplBuffers) The number of buffers in the MPL send queue.
# * `S`, (MleMessages) The number of messages in the MLE send queue.
# * `S`, (MleBuffers) The number of buffers in the MLE send queue.
# * `S`, (ArpMessages) The number of messages in the ARP send queue.
# * `S`, (ArpBuffers) The number of buffers in the ARP send queue.
# * `S`, (CoapMessages) The number of messages in the CoAP send queue.
# * `S`, (CoapBuffers) The number of buffers in the CoAP send queue.
# */
SPINEL_PROP_MSG_BUFFER_COUNTERS = 1680
# All MAC related counters.
# /** Format: t(A(L))t(A(L))
# *
# * The contents include two structs, first one corresponds to
# * all transmit related MAC counters, second one provides the
# * receive related counters.
# *
# * The transmit structure includes:
# *
# * 'L': TxTotal (The total number of transmissions).
# * 'L': TxUnicast (The total number of unicast transmissions).
# * 'L': TxBroadcast (The total number of broadcast transmissions).
# * 'L': TxAckRequested (The number of transmissions with ack request).
# * 'L': TxAcked (The number of transmissions that were acked).
# * 'L': TxNoAckRequested (The number of transmissions without ack request).
# * 'L': TxData (The number of transmitted data).
# * 'L': TxDataPoll (The number of transmitted data poll).
# * 'L': TxBeacon (The number of transmitted beacon).
# * 'L': TxBeaconRequest (The number of transmitted beacon request).
# * 'L': TxOther (The number of transmitted other types of frames).
# * 'L': TxRetry (The number of retransmission times).
# * 'L': TxErrCca (The number of CCA failure times).
# * 'L': TxErrAbort (The number of frame transmission failures due to abort error).
# * 'L': TxErrBusyChannel (The number of frames that were dropped due to a busy channel).
# * 'L': TxDirectMaxRetryExpiry (The number of expired retransmission retries for direct message).
# * 'L': TxIndirectMaxRetryExpiry (The number of expired retransmission retries for indirect message).
# *
# * The receive structure includes:
# *
# * 'L': RxTotal (The total number of received packets).
# * 'L': RxUnicast (The total number of unicast packets received).
# * 'L': RxBroadcast (The total number of broadcast packets received).
# * 'L': RxData (The number of received data).
# * 'L': RxDataPoll (The number of received data poll).
# * 'L': RxBeacon (The number of received beacon).
# * 'L': RxBeaconRequest (The number of received beacon request).
# * 'L': RxOther (The number of received other types of frames).
# * 'L': RxAddressFiltered (The number of received packets filtered by address filter
# * (allowlist or denylist)).
# * 'L': RxDestAddrFiltered (The number of received packets filtered by destination check).
# * 'L': RxDuplicated (The number of received duplicated packets).
# * 'L': RxErrNoFrame (The number of received packets with no or malformed content).
# * 'L': RxErrUnknownNeighbor (The number of received packets from unknown neighbor).
# * 'L': RxErrInvalidSrcAddr (The number of received packets whose source address is invalid).
# * 'L': RxErrSec (The number of received packets with security error).
# * 'L': RxErrFcs (The number of received packets with FCS error).
# * 'L': RxErrOther (The number of received packets with other error).
# *
# * Writing to this property with any value would reset all MAC counters to zero.
# */
SPINEL_PROP_CNTR_ALL_MAC_COUNTERS = 1681
# Thread MLE counters.
# /** Format: `SSSSSSSSS`
# *
# * 'S': DisabledRole (The number of times device entered OT_DEVICE_ROLE_DISABLED role).
# * 'S': DetachedRole (The number of times device entered OT_DEVICE_ROLE_DETACHED role).
# * 'S': ChildRole (The number of times device entered OT_DEVICE_ROLE_CHILD role).
# * 'S': RouterRole (The number of times device entered OT_DEVICE_ROLE_ROUTER role).
# * 'S': LeaderRole (The number of times device entered OT_DEVICE_ROLE_LEADER role).
# * 'S': AttachAttempts (The number of attach attempts while device was detached).
# * 'S': PartitionIdChanges (The number of changes to partition ID).
# * 'S': BetterPartitionAttachAttempts (The number of attempts to attach to a better partition).
# * 'S': ParentChanges (The number of times device changed its parents).
# *
# * Writing to this property with any value would reset all MLE counters to zero.
# */
SPINEL_PROP_CNTR_MLE_COUNTERS = 1682
# Thread IPv6 counters.
# /** Format: `t(LL)t(LL)`
# *
# * The contents include two structs, first one corresponds to
# * all transmit related MAC counters, second one provides the
# * receive related counters.
# *
# * The transmit structure includes:
# * 'L': TxSuccess (The number of IPv6 packets successfully transmitted).
# * 'L': TxFailure (The number of IPv6 packets failed to transmit).
# *
# * The receive structure includes:
# * 'L': RxSuccess (The number of IPv6 packets successfully received).
# * 'L': RxFailure (The number of IPv6 packets failed to receive).
# *
# * Writing to this property with any value would reset all IPv6 counters to zero.
# */
SPINEL_PROP_CNTR_ALL_IP_COUNTERS = 1683
# MAC retry histogram.
# /** Format: t(A(L))t(A(L))
# *
# * Required capability: SPINEL_CAP_MAC_RETRY_HISTOGRAM
# *
# * The contents include two structs, first one is histogram which corresponds to retransmissions number of direct
# * messages, second one provides the histogram of retransmissions for indirect messages.
# *
# * The first structure includes:
# * 'L': DirectRetry[0] (The number of packets after 0 retry).
# * 'L': DirectRetry[1] (The number of packets after 1 retry).
# * ...
# * 'L': DirectRetry[n] (The number of packets after n retry).
# *
# * The size of the array is OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_DIRECT.
# *
# * The second structure includes:
# * 'L': IndirectRetry[0] (The number of packets after 0 retry).
# * 'L': IndirectRetry[1] (The number of packets after 1 retry).
# * ...
# * 'L': IndirectRetry[m] (The number of packets after m retry).
# *
# * The size of the array is OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_INDIRECT.
# *
# * Writing to this property with any value would reset MAC retry histogram.
# */
SPINEL_PROP_CNTR_MAC_RETRY_HISTOGRAM = 1684
# MAC retry histogram.
# /** Format: t(A(L))t(A(L))
# *
# * Required capability: SPINEL_CAP_MAC_RETRY_HISTOGRAM
# *
# * The contents include two structs, first one is histogram which corresponds to retransmissions number of direct
# * messages, second one provides the histogram of retransmissions for indirect messages.
# *
# * The first structure includes:
# * 'L': DirectRetry[0] (The number of packets after 0 retry).
# * 'L': DirectRetry[1] (The number of packets after 1 retry).
# * ...
# * 'L': DirectRetry[n] (The number of packets after n retry).
# *
# * The size of the array is OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_DIRECT.
# *
# * The second structure includes:
# * 'L': IndirectRetry[0] (The number of packets after 0 retry).
# * 'L': IndirectRetry[1] (The number of packets after 1 retry).
# * ...
# * 'L': IndirectRetry[m] (The number of packets after m retry).
# *
# * The size of the array is OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_INDIRECT.
# *
# * Writing to this property with any value would reset MAC retry histogram.
# */
SPINEL_PROP_CNTR__END = 2048
# MAC retry histogram.
# /** Format: t(A(L))t(A(L))
# *
# * Required capability: SPINEL_CAP_MAC_RETRY_HISTOGRAM
# *
# * The contents include two structs, first one is histogram which corresponds to retransmissions number of direct
# * messages, second one provides the histogram of retransmissions for indirect messages.
# *
# * The first structure includes:
# * 'L': DirectRetry[0] (The number of packets after 0 retry).
# * 'L': DirectRetry[1] (The number of packets after 1 retry).
# * ...
# * 'L': DirectRetry[n] (The number of packets after n retry).
# *
# * The size of the array is OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_DIRECT.
# *
# * The second structure includes:
# * 'L': IndirectRetry[0] (The number of packets after 0 retry).
# * 'L': IndirectRetry[1] (The number of packets after 1 retry).
# * ...
# * 'L': IndirectRetry[m] (The number of packets after m retry).
# *
# * The size of the array is OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_INDIRECT.
# *
# * Writing to this property with any value would reset MAC retry histogram.
# */
SPINEL_PROP_RCP_EXT__BEGIN = 2048
# MAC Key
# /** Format: `CCddd`.
# *
# * `C`: MAC key ID mode
# * `C`: MAC key ID
# * `d`: previous MAC key material data
# * `d`: current MAC key material data
# * `d`: next MAC key material data
# *
# * The Spinel property is used to set/get MAC key materials to and from RCP.
# */
SPINEL_PROP_RCP_MAC_KEY = 2048
# MAC Frame Counter
# /** Format: `L` for read and `Lb` or `L` for write
# *
# * `L`: MAC frame counter
# * 'b': Optional boolean used only during write. If not provided, `false` is assumed.
# * If `true` counter is set only if the new value is larger than current value.
# * If `false` the new value is set as frame counter independent of the current value.
# *
# * The Spinel property is used to set MAC frame counter to RCP.
# */
SPINEL_PROP_RCP_MAC_FRAME_COUNTER = 2049
# Timestamps when Spinel frame is received and transmitted
# /** Format: `X`.
# *
# * `X`: Spinel frame transmit timestamp
# *
# * The Spinel property is used to get timestamp from RCP to calculate host and RCP timer difference.
# */
SPINEL_PROP_RCP_TIMESTAMP = 2050
# Configure Enhanced ACK probing
# /** Format: `SEC` (Write-only).
# *
# * `S`: Short address
# * `E`: Extended address
# * `C`: List of requested metric ids encoded as bit fields in single byte
# *
# * +---------------+----+
# * | Metric | Id |
# * +---------------+----+
# * | Received PDUs | 0 |
# * | LQI | 1 |
# * | Link margin | 2 |
# * | RSSI | 3 |
# * +---------------+----+
# *
# * Enable/disable or update Enhanced-ACK Based Probing in radio for a specific Initiator.
# */
SPINEL_PROP_RCP_ENH_ACK_PROBING = 2051
# CSL Accuracy
# /** Format: `C`
# * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
# *
# * The current CSL rx/tx scheduling drift, in units of ± ppm.
# */
SPINEL_PROP_RCP_CSL_ACCURACY = 2052
# CSL Uncertainty
# /** Format: `C`
# * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
# *
# * The current uncertainty, in units of 10 us, of the clock used for scheduling CSL operations.
# */
SPINEL_PROP_RCP_CSL_UNCERTAINTY = 2053
# CSL Uncertainty
# /** Format: `C`
# * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
# *
# * The current uncertainty, in units of 10 us, of the clock used for scheduling CSL operations.
# */
SPINEL_PROP_RCP_EXT__END = 2304
# CSL Uncertainty
# /** Format: `C`
# * Required capability: `SPINEL_CAP_NET_THREAD_1_2`
# *
# * The current uncertainty, in units of 10 us, of the clock used for scheduling CSL operations.
# */
SPINEL_PROP_MULTIPAN__BEGIN = 2304
# Multipan interface selection.
# /** Format: `C`
# * Type: Read-Write
# *
# * `C`: b[0-1] - Interface id.
# * b[7] - 1: Complete pending radio operation, 0: immediate(force) switch.
# *
# * This feature gets or sets the radio interface to be used in multipan configuration
# *
# * Default value: 0
# */
SPINEL_PROP_MULTIPAN_ACTIVE_INTERFACE = 2304
# Multipan interface selection.
# /** Format: `C`
# * Type: Read-Write
# *
# * `C`: b[0-1] - Interface id.
# * b[7] - 1: Complete pending radio operation, 0: immediate(force) switch.
# *
# * This feature gets or sets the radio interface to be used in multipan configuration
# *
# * Default value: 0
# */
SPINEL_PROP_MULTIPAN__END = 2320
# Multipan interface selection.
# /** Format: `C`
# * Type: Read-Write
# *
# * `C`: b[0-1] - Interface id.
# * b[7] - 1: Complete pending radio operation, 0: immediate(force) switch.
# *
# * This feature gets or sets the radio interface to be used in multipan configuration
# *
# * Default value: 0
# */
SPINEL_PROP_INFRA_IF__BEGIN = 2320
# Infrastructure interface state.
# /** Format: `LbA(6)`
# * Type: Write
# *
# * `L`: The infrastructure interface index.
# * `b`: If the infrastructure interface is running.
# * `A(6)`: The IPv6 addresses of the infrastructure interface.
# *
# * If the InfraIf hasn't been set up on NCP or the InfraIf changes, NCP will re-initialize
# * the border routing module. NCP will compare the infrastructure interface index and decide
# * whether to re-initialize the border routing module. Otherwise, NCP will simply update the
# * InfraIf state and addresses.
# */
SPINEL_PROP_INFRA_IF_STATE = 2321
# Received ICMPv6 packet on the infrastructure interface.
# /** Format: `L6d`
# * Type: Write-only
# *
# * `L`: The infrastructure interface index.
# * `6`: The IP6 source address of the ICMPv6 packet.
# * `d`: The data of the ICMPv6 packet. The host MUST ensure the hoplimit is 255.
# */
SPINEL_PROP_INFRA_IF_RECV_ICMP6 = 2322
# ICMP6 message sent by NCP and needs to be sent on the infrastructure interface.
# /** Format: `L6d`
# * Type: Unsolicited notifications only
# *
# * `L`: The infrastructure interface index.
# * `6`: The IP6 destination address of the message to send.
# * `d`: The data of the message to send.
# */
SPINEL_PROP_INFRA_IF_SEND_ICMP6 = 2323
# ICMP6 message sent by NCP and needs to be sent on the infrastructure interface.
# /** Format: `L6d`
# * Type: Unsolicited notifications only
# *
# * `L`: The infrastructure interface index.
# * `6`: The IP6 destination address of the message to send.
# * `d`: The data of the message to send.
# */
SPINEL_PROP_INFRA_IF__END = 2336
# ICMP6 message sent by NCP and needs to be sent on the infrastructure interface.
# /** Format: `L6d`
# * Type: Unsolicited notifications only
# *
# * `L`: The infrastructure interface index.
# * `6`: The IP6 destination address of the message to send.
# * `d`: The data of the message to send.
# */
SPINEL_PROP_SRP_SERVER__BEGIN = 2336
# SRP server state.
# /** Format `b`
# * Type: Read-Write
# *
# * `b`: Whether to enable or disable the SRP server.
# */
SPINEL_PROP_SRP_SERVER_ENABLED = 2337
# SRP server auto enable mode.
# /** Format `b`
# * Type: Read-Write
# *
# * `b`: A boolean that indicates the SRP server auto enable mode.
# */
SPINEL_PROP_SRP_SERVER_AUTO_ENABLE_MODE = 2338
# SRP server auto enable mode.
# /** Format `b`
# * Type: Read-Write
# *
# * `b`: A boolean that indicates the SRP server auto enable mode.
# */
SPINEL_PROP_SRP_SERVER__END = 2352
# SRP server auto enable mode.
# /** Format `b`
# * Type: Read-Write
# *
# * `b`: A boolean that indicates the SRP server auto enable mode.
# */
SPINEL_PROP_DNSSD__BEGIN = 2352
# Dnssd State
# /** Format `C`: Write-only
# *
# * `C`: The dnssd state.
# */
SPINEL_PROP_DNSSD_STATE = 2353
# Dnssd Request Result
# /** Format `CLD`: Write
# *
# * `C` : The result of the request. A unsigned int8 corresponds to otError.
# * `L` : The Dnssd Request ID.
# * `D` : The context of the request. (A pointer to the callback for the request)
# *
# * Host uses this property to notify the NCP of the result of NCP's DNS-SD request.
# */
SPINEL_PROP_DNSSD_REQUEST_RESULT = 2354
# DNS-SD Host
# /** Format `USA(6)LD`: Inserted/Removed
# *
# * `U` : The host name.
# * `S` : The count of IPv6 addresses.
# * `A(6)` : The IPv6 addresses of the host.
# * `L` : The Dnssd Request ID.
# * `D` : The context of the request. (A pointer to the callback for the request)
# *
# * NCP uses this property to register/unregister a DNS-SD host.
# */
SPINEL_PROP_DNSSD_HOST = 2355
# DNS-SD Service
# /**
# * Format `UUUt(A(U))dSSSSLD`: Inserted/Removed
# *
# * `U` : The host name (does not include domain name).
# * `U` : The service instance name label (not the full name).
# * `U` : The service type (e.g., "_mt._udp", does not include domain name).
# * `t(A(U))` : Array of sub-type labels (can be empty array if no label).
# * `d` : Encoded TXT data bytes.
# * `S` : The service port number.
# * `S` : The service priority.
# * `S` : The service weight.
# * `L` : The service TTL in seconds.
# * `L` : The Dnssd Request ID.
# * `D` : The context of the request. (A pointer to the callback for the request)
# *
# * NCP uses this property to register/unregister a DNS-SD service.
# */
SPINEL_PROP_DNSSD_SERVICE = 2356
# DNS-SD Key Record
# /**
# * Format `Ut(U)dSSLD`: Inserted/Removed
# *
# * `U` : A host or a service instance name (does not include domain name).
# * `t(U)` : The service type if key is for a service (does not include domain name).
# * `d` : Byte array containing the key record data.
# * `S` : The resource record class.
# * `L` : The TTL in seconds.
# * `L` : The Dnssd Request ID.
# * `D` : The context of the request. (A pointer to the callback for the request)
# *
# * NCP uses this property to register/unregister a DNS-SD key record.
# */
SPINEL_PROP_DNSSD_KEY_RECORD = 2357
# DNS-SD Key Record
# /**
# * Format `Ut(U)dSSLD`: Inserted/Removed
# *
# * `U` : A host or a service instance name (does not include domain name).
# * `t(U)` : The service type if key is for a service (does not include domain name).
# * `d` : Byte array containing the key record data.
# * `S` : The resource record class.
# * `L` : The TTL in seconds.
# * `L` : The Dnssd Request ID.
# * `D` : The context of the request. (A pointer to the callback for the request)
# *
# * NCP uses this property to register/unregister a DNS-SD key record.
# */
SPINEL_PROP_DNSSD__END = 2384
# DNS-SD Key Record
# /**
# * Format `Ut(U)dSSLD`: Inserted/Removed
# *
# * `U` : A host or a service instance name (does not include domain name).
# * `t(U)` : The service type if key is for a service (does not include domain name).
# * `d` : Byte array containing the key record data.
# * `S` : The resource record class.
# * `L` : The TTL in seconds.
# * `L` : The Dnssd Request ID.
# * `D` : The context of the request. (A pointer to the callback for the request)
# *
# * NCP uses this property to register/unregister a DNS-SD key record.
# */
SPINEL_PROP_BORDER_AGENT__BEGIN = 2384
# Border Agent MeshCoP service state.
# /**
# * Format: `bSD`: Get and Unsolicited notifications.
# *
# * `b`: Whether the border agent is running or not.
# * `S`: The UDP port that is being used by the border agent. If the state is 'Stopped', the port MUST be 0.
# * `D`: The encoded MeshCoP service TXT data (from Thread side).
# */
SPINEL_PROP_BORDER_AGENT_MESHCOP_SERVICE_STATE = 2385
# Border Agent MeshCoP service state.
# /**
# * Format: `bSD`: Get and Unsolicited notifications.
# *
# * `b`: Whether the border agent is running or not.
# * `S`: The UDP port that is being used by the border agent. If the state is 'Stopped', the port MUST be 0.
# * `D`: The encoded MeshCoP service TXT data (from Thread side).
# */
SPINEL_PROP_BORDER_AGENT__END = 2416
# Border Agent MeshCoP service state.
# /**
# * Format: `bSD`: Get and Unsolicited notifications.
# *
# * `b`: Whether the border agent is running or not.
# * `S`: The UDP port that is being used by the border agent. If the state is 'Stopped', the port MUST be 0.
# * `D`: The encoded MeshCoP service TXT data (from Thread side).
# */
SPINEL_PROP_BACKBONE_ROUTER__BEGIN = 2416
# Backbone Router State
# /**
# * Format: `C` - Unsolicited notifications only
# *
# * `C`: The Backbone Router state. The value is the same as `otBackboneRouterState`.
# *
# * This property is used to notify the host the state of the Backbone Router.
# */
SPINEL_PROP_BACKBONE_ROUTER_STATE = 2417
# Enablement/Disablement of Backbone Router function.
# /**
# * Format: `b` - Write-Only
# *
# * `b`: Whether to enable or disable the Backbone Router function.
# *
# * Host uses this property to enable or disable the Backbone Router function on NCP.
# */
SPINEL_PROP_BACKBONE_ROUTER_ENABLE = 2418
# BackBone Router Multicast Listener.
# /**
# * Format: `6` - Inserted/Removed
# *
# * `6`: The multicast address that is subscribed by a multicast listener.
# *
# * NCP uses this property to subscribe or unsubscribe a multicast listener on the host.
# */
SPINEL_PROP_BACKBONE_ROUTER_MULTICAST_LISTENER = 2419
# BackBone Router Multicast Listener.
# /**
# * Format: `6` - Inserted/Removed
# *
# * `6`: The multicast address that is subscribed by a multicast listener.
# *
# * NCP uses this property to subscribe or unsubscribe a multicast listener on the host.
# */
SPINEL_PROP_BACKBONE_ROUTER__END = 2448
# BackBone Router Multicast Listener.
# /**
# * Format: `6` - Inserted/Removed
# *
# * `6`: The multicast address that is subscribed by a multicast listener.
# *
# * NCP uses this property to subscribe or unsubscribe a multicast listener on the host.
# */
SPINEL_PROP_NEST__BEGIN = 15296
# BackBone Router Multicast Listener.
# /**
# * Format: `6` - Inserted/Removed
# *
# * `6`: The multicast address that is subscribed by a multicast listener.
# *
# * NCP uses this property to subscribe or unsubscribe a multicast listener on the host.
# */
SPINEL_PROP_NEST_STREAM_MFG = 15296
# The legacy network ULA prefix (8 bytes).
# /** Format: 'D'
# *
# * This property is deprecated.
# */
SPINEL_PROP_NEST_LEGACY_ULA_PREFIX = 15297
# The EUI64 of last node joined using legacy protocol (if none, all zero EUI64 is returned).
# /** Format: 'E'
# *
# * This property is deprecated.
# */
SPINEL_PROP_NEST_LEGACY_LAST_NODE_JOINED = 15298
# The EUI64 of last node joined using legacy protocol (if none, all zero EUI64 is returned).
# /** Format: 'E'
# *
# * This property is deprecated.
# */
SPINEL_PROP_NEST__END = 15360
# The EUI64 of last node joined using legacy protocol (if none, all zero EUI64 is returned).
# /** Format: 'E'
# *
# * This property is deprecated.
# */
SPINEL_PROP_VENDOR__BEGIN = 15360
# The EUI64 of last node joined using legacy protocol (if none, all zero EUI64 is returned).
# /** Format: 'E'
# *
# * This property is deprecated.
# */
SPINEL_PROP_VENDOR__END = 16384
# The EUI64 of last node joined using legacy protocol (if none, all zero EUI64 is returned).
# /** Format: 'E'
# *
# * This property is deprecated.
# */
SPINEL_PROP_VENDOR_ESP__BEGIN = 15360
# The EUI64 of last node joined using legacy protocol (if none, all zero EUI64 is returned).
# /** Format: 'E'
# *
# * This property is deprecated.
# */
SPINEL_PROP_VENDOR_ESP__END = 15488
# The EUI64 of last node joined using legacy protocol (if none, all zero EUI64 is returned).
# /** Format: 'E'
# *
# * This property is deprecated.
# */
SPINEL_PROP_DEBUG__BEGIN = 16384
# Testing platform assert
# /** Format: 'b' (read-only)
# *
# * Reading this property will cause an assert on the NCP. This is intended for testing the assert functionality of
# * underlying platform/NCP. Assert should ideally cause the NCP to reset, but if this is not supported a `false`
# * boolean is returned in response.
# */
SPINEL_PROP_DEBUG_TEST_ASSERT = 16384
# The NCP log level.
# /** Format: `C` */
SPINEL_PROP_DEBUG_NCP_LOG_LEVEL = 16385
# Testing platform watchdog
# /** Format: Empty (read-only)
# *
# * Reading this property will causes NCP to start a `while(true) ;` loop and thus triggering a watchdog.
# *
# * This is intended for testing the watchdog functionality on the underlying platform/NCP.
# */
SPINEL_PROP_DEBUG_TEST_WATCHDOG = 16386
# The NCP timestamp base
# /** Format: X (write-only)
# *
# * This property controls the time base value that is used for logs timestamp field calculation.
# */
SPINEL_PROP_DEBUG_LOG_TIMESTAMP_BASE = 16387
# TREL Radio Link - test mode enable
# /** Format `b` (read-write)
# *
# * This property is intended for testing TREL (Thread Radio Encapsulation Link) radio type only (during simulation).
# * It allows the TREL interface to be temporarily disabled and (re)enabled. While disabled all traffic through
# * TREL interface is dropped silently (to emulate a radio/interface down scenario).
# *
# * This property is only available when the TREL radio link type is supported.
# */
SPINEL_PROP_DEBUG_TREL_TEST_MODE_ENABLE = 16388
# TREL Radio Link - test mode enable
# /** Format `b` (read-write)
# *
# * This property is intended for testing TREL (Thread Radio Encapsulation Link) radio type only (during simulation).
# * It allows the TREL interface to be temporarily disabled and (re)enabled. While disabled all traffic through
# * TREL interface is dropped silently (to emulate a radio/interface down scenario).
# *
# * This property is only available when the TREL radio link type is supported.
# */
SPINEL_PROP_DEBUG__END = 17408
# TREL Radio Link - test mode enable
# /** Format `b` (read-write)
# *
# * This property is intended for testing TREL (Thread Radio Encapsulation Link) radio type only (during simulation).
# * It allows the TREL interface to be temporarily disabled and (re)enabled. While disabled all traffic through
# * TREL interface is dropped silently (to emulate a radio/interface down scenario).
# *
# * This property is only available when the TREL radio link type is supported.
# */
SPINEL_PROP_EXPERIMENTAL__BEGIN = 2000000
# TREL Radio Link - test mode enable
# /** Format `b` (read-write)
# *
# * This property is intended for testing TREL (Thread Radio Encapsulation Link) radio type only (during simulation).
# * It allows the TREL interface to be temporarily disabled and (re)enabled. While disabled all traffic through
# * TREL interface is dropped silently (to emulate a radio/interface down scenario).
# *
# * This property is only available when the TREL radio link type is supported.
# */
SPINEL_PROP_EXPERIMENTAL__END = 2097152
class spinel_datatype_t(Enum):
SPINEL_DATATYPE_NULL_C = 0
SPINEL_DATATYPE_VOID_C = 46
SPINEL_DATATYPE_BOOL_C = 98
SPINEL_DATATYPE_UINT8_C = 67
SPINEL_DATATYPE_INT8_C = 99
SPINEL_DATATYPE_UINT16_C = 83
SPINEL_DATATYPE_INT16_C = 115
SPINEL_DATATYPE_UINT32_C = 76
SPINEL_DATATYPE_INT32_C = 108
SPINEL_DATATYPE_UINT64_C = 88
SPINEL_DATATYPE_INT64_C = 120
SPINEL_DATATYPE_UINT_PACKED_C = 105
SPINEL_DATATYPE_IPv6ADDR_C = 54
SPINEL_DATATYPE_EUI64_C = 69
SPINEL_DATATYPE_EUI48_C = 101
SPINEL_DATATYPE_DATA_WLEN_C = 100
SPINEL_DATATYPE_DATA_C = 68
#!< Zero-Terminated UTF8-Encoded String
SPINEL_DATATYPE_UTF8_C = 85
SPINEL_DATATYPE_STRUCT_C = 116
SPINEL_DATATYPE_ARRAY_C = 65
dict_keys(['spinel_status_t', 'spinel_net_role_t', 'spinel_ipv6_icmp_ping_offload_mode_t', 'spinel_scan_state_t', 'spinel_mcu_power_state_t', 'spinel_power_state_t', 'spinel_host_power_state_t', 'spinel_meshcop_joiner_state_t', 'MAC_FILTER', 'spinel_srp_client_item_state_t', 'spinel_srp_client_error_t', 'spinel_command_t', 'spinel_capability_t', 'spinel_prop_key_t', 'spinel_datatype_t'])
orphans 19
[{'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:652:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NET_FLAG_ON_MESH', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NET_FLAG_DEFAULT_ROUTE', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NET_FLAG_CONFIGURE', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 4}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NET_FLAG_DHCP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 8}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NET_FLAG_SLAAC', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 16}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NET_FLAG_PREFERRED', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 32}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NET_FLAG_PREFERENCE_OFFSET', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 6}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NET_FLAG_PREFERENCE_MASK', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 192}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:665:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NET_FLAG_EXT_DP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 64}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NET_FLAG_EXT_DNS', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 128}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:671:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_ROUTE_PREFERENCE_HIGH', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 64}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_ROUTE_PREFERENCE_MEDIUM', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_ROUTE_PREFERENCE_LOW', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 192}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:678:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_ROUTE_FLAG_NAT64', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 32}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:683:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_MODE_FULL_NETWORK_DATA', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_MODE_FULL_THREAD_DEV', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_MODE_SECURE_DATA_REQUEST', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 4}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_MODE_RX_ON_WHEN_IDLE', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 8}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:691:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_GPIO_FLAG_DIR_INPUT', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_GPIO_FLAG_DIR_OUTPUT', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 128}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_GPIO_FLAG_PULL_UP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 64}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_GPIO_FLAG_PULL_DOWN', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 32}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_GPIO_FLAG_OPEN_DRAIN', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 32}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_GPIO_FLAG_TRIGGER_NONE', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_GPIO_FLAG_TRIGGER_RISING', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 16}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_GPIO_FLAG_TRIGGER_FALLING', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 8}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_GPIO_FLAG_TRIGGER_ANY', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 24}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:704:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_PROTOCOL_TYPE_BOOTLOADER', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_PROTOCOL_TYPE_ZIGBEE_IP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_PROTOCOL_TYPE_THREAD', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 3}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:718:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_LEVEL_EMERG', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_LEVEL_ALERT', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_LEVEL_CRIT', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_LEVEL_ERR', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 3}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_LEVEL_WARN', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 4}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_LEVEL_NOTICE', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 5}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_LEVEL_INFO', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 6}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_LEVEL_DEBUG', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 7}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:730:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_NONE', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_API', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_MLE', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_ARP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 3}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_NET_DATA', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 4}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_ICMP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 5}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_IP6', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 6}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_TCP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 7}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_MAC', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 8}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_MEM', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 9}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_NCP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 10}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_MESH_COP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 11}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_NET_DIAG', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 12}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_PLATFORM', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 13}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_COAP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 14}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_CLI', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 15}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_CORE', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 16}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_UTIL', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 17}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_BBR', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 18}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_MLR', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 19}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_DUA', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 20}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_BR', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 21}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_SRP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 22}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_NCP_LOG_REGION_OT_DNS', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 23}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:758:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_MESHCOP_COMMISSIONER_STATE_DISABLED', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_MESHCOP_COMMISSIONER_STATE_PETITION', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_MESHCOP_COMMISSIONER_STATE_ACTIVE', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:765:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_ADDRESS_CACHE_ENTRY_STATE_CACHED', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_ADDRESS_CACHE_ENTRY_STATE_SNOOPED', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_ADDRESS_CACHE_ENTRY_STATE_QUERY', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_ADDRESS_CACHE_ENTRY_STATE_RETRY_QUERY', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 3}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:773:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_RADIO_LINK_IEEE_802_15_4', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_RADIO_LINK_TREL_UDP6', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:783:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_LINK_METRICS_STATUS_SUCCESS', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_LINK_METRICS_STATUS_CANNOT_SUPPORT_NEW_SERIES', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_LINK_METRICS_STATUS_SERIESID_ALREADY_REGISTERED', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_LINK_METRICS_STATUS_SERIESID_NOT_RECOGNIZED', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 3}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_LINK_METRICS_STATUS_NO_MATCHING_FRAMES_RECEIVED', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 4}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_LINK_METRICS_STATUS_OTHER_ERROR', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 254}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:799:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_LINK_METRIC_PDU_COUNT', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_LINK_METRIC_LQI', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_LINK_METRIC_LINK_MARGIN', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 4}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_LINK_METRIC_RSSI', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 8}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:809:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_FRAME_TYPE_MLE_LINK_PROBE', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_FRAME_TYPE_MAC_DATA', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_FRAME_TYPE_MAC_DATA_REQUEST', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 4}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_FRAME_TYPE_MAC_ACK', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 8}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:819:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_MLR_PARAMID_TIMEOUT', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:826:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_BACKBONE_ROUTER_STATE_DISABLED', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_BACKBONE_ROUTER_STATE_SECONDARY', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_THREAD_BACKBONE_ROUTER_STATE_PRIMARY', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:889:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_MD_FLAG_TX', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': 'Packet was transmitted, not received.', 'raw_comment': '//!< Packet was transmitted, not received.', 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_MD_FLAG_BAD_FCS', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': 'Packet was received with bad FCS', 'raw_comment': '//!< Packet was received with bad FCS', 'value': 4}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_MD_FLAG_DUPE', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': 'Packet seems to be a duplicate', 'raw_comment': '//!< Packet seems to be a duplicate', 'value': 8}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_MD_FLAG_ACKED_FP', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': 'Packet was acknowledged with frame pending set', 'raw_comment': '//!< Packet was acknowledged with frame pending set', 'value': 16}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_MD_FLAG_ACKED_SEC', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': 'Packet was acknowledged with secure enhance ACK', 'raw_comment': '//!< Packet was acknowledged with secure enhance ACK', 'value': 32}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_MD_FLAG_RESERVED', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': 'Flags reserved for future use.', 'raw_comment': '//!< Flags reserved for future use.', 'value': 65474}]}, {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:899:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_RESET_PLATFORM', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 1}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_RESET_STACK', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 2}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_RESET_BOOTLOADER', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 3}]}]
spinel_datatype_t {'kind': 'ENUM_DECL', 'spelling': 'enum (unnamed at spinel.h:5067:1)', 'location': 'spinel.h', 'type': 'Enum', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'enumerations': [{'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_NULL_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 0}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_VOID_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 46}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_BOOL_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 98}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_UINT8_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 67}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_INT8_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 99}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_UINT16_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 83}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_INT16_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 115}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_UINT32_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 76}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_INT32_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 108}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_UINT64_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 88}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_INT64_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 120}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_UINT_PACKED_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 105}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_IPv6ADDR_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 54}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_EUI64_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 69}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_EUI48_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 101}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_DATA_WLEN_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 100}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_DATA_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 68}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_UTF8_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': 'Zero-Terminated UTF8-Encoded String', 'raw_comment': '//!< Zero-Terminated UTF8-Encoded String', 'value': 85}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_STRUCT_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 116}, {'kind': 'ENUM_CONSTANT_DECL', 'spelling': 'SPINEL_DATATYPE_ARRAY_C', 'location': 'spinel.h', 'type': 'Int', 'result_type': 'Invalid', 'brief_comment': None, 'raw_comment': None, 'value': 65}]}
Opening serial to /dev/cu.usbmodem58970174231 @ 460800 rtscts False
spinel_status_t [<spinel_status_t.SPINEL_STATUS_OK: 0>, <spinel_status_t.SPINEL_STATUS_FAILURE: 1>, <spinel_status_t.SPINEL_STATUS_UNIMPLEMENTED: 2>, <spinel_status_t.SPINEL_STATUS_INVALID_ARGUMENT: 3>, <spinel_status_t.SPINEL_STATUS_INVALID_STATE: 4>, <spinel_status_t.SPINEL_STATUS_INVALID_COMMAND: 5>, <spinel_status_t.SPINEL_STATUS_INVALID_INTERFACE: 6>, <spinel_status_t.SPINEL_STATUS_INTERNAL_ERROR: 7>, <spinel_status_t.SPINEL_STATUS_SECURITY_ERROR: 8>, <spinel_status_t.SPINEL_STATUS_PARSE_ERROR: 9>, <spinel_status_t.SPINEL_STATUS_IN_PROGRESS: 10>, <spinel_status_t.SPINEL_STATUS_NOMEM: 11>, <spinel_status_t.SPINEL_STATUS_BUSY: 12>, <spinel_status_t.SPINEL_STATUS_PROP_NOT_FOUND: 13>, <spinel_status_t.SPINEL_STATUS_DROPPED: 14>, <spinel_status_t.SPINEL_STATUS_EMPTY: 15>, <spinel_status_t.SPINEL_STATUS_CMD_TOO_BIG: 16>, <spinel_status_t.SPINEL_STATUS_NO_ACK: 17>, <spinel_status_t.SPINEL_STATUS_CCA_FAILURE: 18>, <spinel_status_t.SPINEL_STATUS_ALREADY: 19>, <spinel_status_t.SPINEL_STATUS_ITEM_NOT_FOUND: 20>, <spinel_status_t.SPINEL_STATUS_INVALID_COMMAND_FOR_PROP: 21>, <spinel_status_t.SPINEL_STATUS_UNKNOWN_NEIGHBOR: 22>, <spinel_status_t.SPINEL_STATUS_NOT_CAPABLE: 23>, <spinel_status_t.SPINEL_STATUS_RESPONSE_TIMEOUT: 24>, <spinel_status_t.SPINEL_STATUS_SWITCHOVER_DONE: 25>, <spinel_status_t.SPINEL_STATUS_SWITCHOVER_FAILED: 26>, <spinel_status_t.SPINEL_STATUS_JOIN_FAILURE: 104>, <spinel_status_t.SPINEL_STATUS_JOIN_SECURITY: 105>, <spinel_status_t.SPINEL_STATUS_JOIN_NO_PEERS: 106>, <spinel_status_t.SPINEL_STATUS_JOIN_INCOMPATIBLE: 107>, <spinel_status_t.SPINEL_STATUS_JOIN_RSP_TIMEOUT: 108>, <spinel_status_t.SPINEL_STATUS_JOIN_SUCCESS: 109>, <spinel_status_t.SPINEL_STATUS_RESET_POWER_ON: 112>, <spinel_status_t.SPINEL_STATUS_RESET_EXTERNAL: 113>, <spinel_status_t.SPINEL_STATUS_RESET_SOFTWARE: 114>, <spinel_status_t.SPINEL_STATUS_RESET_FAULT: 115>, <spinel_status_t.SPINEL_STATUS_RESET_CRASH: 116>, <spinel_status_t.SPINEL_STATUS_RESET_ASSERT: 117>, <spinel_status_t.SPINEL_STATUS_RESET_OTHER: 118>, <spinel_status_t.SPINEL_STATUS_RESET_UNKNOWN: 119>, <spinel_status_t.SPINEL_STATUS_RESET_WATCHDOG: 120>, <spinel_status_t.SPINEL_STATUS_RESET__END: 128>, <spinel_status_t.SPINEL_STATUS_VENDOR__BEGIN: 15360>, <spinel_status_t.SPINEL_STATUS_STACK_NATIVE__BEGIN: 16384>, <spinel_status_t.SPINEL_STATUS_STACK_NATIVE__END: 81920>, <spinel_status_t.SPINEL_STATUS_EXPERIMENTAL__BEGIN: 2000000>, <spinel_status_t.SPINEL_STATUS_EXPERIMENTAL__END: 2097152>]
cap spinel_capability_t.SPINEL_CAP_COUNTERS
cap spinel_capability_t.SPINEL_CAP_UNSOL_UPDATE_FILTER
cap spinel_capability_t.SPINEL_CAP_802_15_4_2450MHZ_OQPSK
cap spinel_capability_t.SPINEL_CAP_CONFIG_RADIO
cap spinel_capability_t.SPINEL_CAP_MAC_RAW
cap spinel_capability_t.SPINEL_CAP_RCP_API_VERSION
cap spinel_capability_t.SPINEL_CAP_RCP_MIN_HOST_API_VERSION
version openthread-esp32/c94fdcdb48-b945928d7; esp32h2; 2025-11-02 22:25:49 UTC
open filter result 2
set channel result 13
stream raw result 1
stream <spinel.codec.WpanApi.PropertyItem object at 0x10e16ead0>
prop SPINEL_PROP_STREAM_RAW
length 69
b"a\x88\xb9\r\x7f\x00\x00E\xec\x08\x02\x00\x00E\xec\x1e\x05(r\xfb\xd0\x00\x84\x85/\xfe\xff\xb1\\l\x00\xb5\xc5w\xfci}s\xa46;\x1b\x17\x16e\xff\xd2\x8e-\xe0'\x01\x02\xebk\x92\xdet\xb8\xf8\xfb\x92\xb2\xd5\x86\xff\xd1\x94\x07"
metadata (-98, -128, 0, (13, 7, 13179591), ((0, 1),))
stream <spinel.codec.WpanApi.PropertyItem object at 0x10e16ebe0>
prop SPINEL_PROP_STREAM_RAW
length 5
b'\x02\x00\xb9\x8d\x03'
metadata (-105, -128, 0, (13, 3, 13182182), ((0, 1),))
stream <spinel.codec.WpanApi.PropertyItem object at 0x10e2b9f50>
prop SPINEL_PROP_STREAM_RAW
length 54
b'a\x88\xd7\r\x7fE\xec\x00\x00\x08\x02E\xec\x00\x00\x1e\x01(B\xb0/\x03\xf7a\xed\xfe\xff"5\xb4\x00\x9e\xa1l\xbe\x7f\xd2\\\xa0W\xe3\xe4\xbd_\xc9\x89\xa1rZ\x16\x177\x8a\x04'
metadata (-108, -128, 0, (13, 4, 13190693), ((0, 1),))
stream <spinel.codec.WpanApi.PropertyItem object at 0x10e2ba050>
prop SPINEL_PROP_STREAM_RAW
length 5
b'\x02\x00\xd7\x93\x08'
metadata (-99, -128, 0, (13, 8, 13192803), ((0, 1),))
stream <spinel.codec.WpanApi.PropertyItem object at 0x10e2ec9b0>
prop SPINEL_PROP_STREAM_RAW
length 65
b'A\x88/\r\x7f\xff\xffV\xb8\t\x12\xfc\xffV\xb8\x01\x91\xd3\xe1+\xfe\xff\xb1\\l(\x8f\xe8\xd2\x00\xd3\xe1+\xfe\xff\xb1\\l\x00S`\x17\xdb\x1f8\xe9 \x18\xdc\x8a\x84<\xe9\x8e\xcd\xcea\x15v\xa9/[\xc8\x95\t'
metadata (-97, -128, 0, (13, 9, 13934971), ((0, 1),))
stream <spinel.codec.WpanApi.PropertyItem object at 0x10e2ecaa0>
prop SPINEL_PROP_STREAM_RAW
length 5
b'\x02\x00\x9e\x8e\x05'
metadata (-104, -128, 0, (13, 5, 14960728), ((0, 1),))
stream <spinel.codec.WpanApi.PropertyItem object at 0x10e370130>
prop SPINEL_PROP_STREAM_RAW
length 5
b'\x02\x00\xa0\x8d\x05'
metadata (-105, -128, 0, (13, 5, 15674876), ((0, 1),))
Traceback (most recent call last):
File "/Users/nraynaud/dev/esp-idf/examples/openthread/ot_rcp/test_nico.py", line 147, in <module>
result = wpan_api.queue_wait_for_prop(prop_id, tid)
File "/Users/nraynaud/.espressif/python_env/idf5.4_py3.14_env/lib/python3.14/site-packages/spinel/codec.py", line 1205, in queue_wait_for_prop
item = self.queue_get(tid, timeout_time - time.time())
File "/Users/nraynaud/.espressif/python_env/idf5.4_py3.14_env/lib/python3.14/site-packages/spinel/codec.py", line 1184, in queue_get
item = self.__queue_prop[tid].get(True, timeout)
File "/usr/local/Cellar/python@3.14/3.14.0_1/Frameworks/Python.framework/Versions/3.14/lib/python3.14/queue.py", line 213, in get
self.not_empty.wait(remaining)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "/usr/local/Cellar/python@3.14/3.14.0_1/Frameworks/Python.framework/Versions/3.14/lib/python3.14/threading.py", line 373, in wait
gotit = waiter.acquire(True, timeout)
KeyboardInterrupt
Process finished with exit code 130 (interrupted by signal 2:SIGINT)
from enum import Enum
import clang.cindex as cidx
from spinel.codec import WpanApi
from spinel.const import SPINEL
from spinel.stream import StreamOpen
# copy/paste from cheader2json
# sadly I need the full comment field
def collect_node(node):
cursorInfoDict = {
"kind": node.kind.name,
"spelling": node.spelling,
"location": node.location.file.name,
"type": node.type.kind.spelling
if node.type.kind != cidx.TypeKind.ELABORATED
else node.type.get_named_type().spelling,
"result_type": node.result_type.kind.spelling
if node.result_type.kind != cidx.TypeKind.ELABORATED
else node.result_type.get_named_type().spelling,
"brief_comment": node.brief_comment,
"raw_comment": node.raw_comment,
}
if node.kind == cidx.CursorKind.ENUM_DECL:
cursorInfoDict["enumerations"] = []
enumNum = 0
for i in node.get_children():
cursorInfoDict["enumerations"].append(collect_node(i))
enumNum += 1
if node.kind == cidx.CursorKind.ENUM_CONSTANT_DECL:
cursorInfoDict["value"] = node.enum_value
return cursorInfoDict
idx = cidx.Index.create()
headerFile = 'spinel.h'
tu = idx.parse(headerFile, options=cidx.TranslationUnit.PARSE_DETAILED_PROCESSING_RECORD, )
enums = {}
orphan_enums = []
# a map of one known member to the chosen enum name
KNOWN_ENUMS_VALUES = {
'SPINEL_MAC_PROMISCUOUS_MODE_OFF': 'MAC_FILTER',
'SPINEL_CAP_LOCK': 'SPINEL_CAP', }
def find_by_known_value(cursorInfoDict):
for node in cursorInfoDict.get('enumerations', []):
if node['kind'] == 'ENUM_CONSTANT_DECL' and node['spelling'] in KNOWN_ENUMS_VALUES:
return KNOWN_ENUMS_VALUES[node['spelling']]
return None
nodes = list(tu.cursor.get_children())
for (i, c) in enumerate(nodes):
if c.location.file is not None:
if c.location.file.name == headerFile:
if c.kind.name == 'ENUM_DECL':
cursorInfoDict = collect_node(c)
next = nodes[i + 1]
# often enums are followed by a typedef for said enum (ex.: spinel_capability_t)
# this is also how "typedef enum" are encoded (ex.: spinel_net_role_t)
if next and next.kind.name == 'TYPEDEF_DECL':
enums[next.spelling] = cursorInfoDict
else:
name = find_by_known_value(cursorInfoDict)
if name:
enums[name] = cursorInfoDict
else:
orphan_enums.append(cursorInfoDict)
# print(json.dumps(enums, indent=2))
print(enums.keys())
print('orphans', len(orphan_enums))
print(orphan_enums)
print('spinel_datatype_t', enums['spinel_datatype_t'])
def create_enum_python(name, node):
def create_enum_value(node):
comment = []
if node['raw_comment']:
comment = node['raw_comment'].split('\n')
comment = [' #' + l.lstrip('/*') for l in comment]
definition = f' {node['spelling']} = {node['value']}'
return '\n'.join(comment + [definition])
values = '\n'.join([create_enum_value(node) for node in node['enumerations']])
return f'''class {name}(Enum):
{values}
'''
with open('generated_enums.py', 'w') as f:
f.write('from enum import Enum\n\n')
for name in enums:
f.write(create_enum_python(name, enums[name]))
stream = StreamOpen('u', '/dev/cu.usbmodem58970174231', True, 460800, False)
nodeid = 1
def extract_enum_def(name, cursorInfoDict):
# some enums have multiple definition for the same value ex: SPINEL_CAP_NET__END, SPINEL_CAP_RCP__BEGIN, SPINEL_CAP_RCP_API_VERSION
doublons_removed = {v_def['value']: v_def['spelling'] for v_def in cursorInfoDict['enumerations']}
return Enum(name, [(name, id) for (id, name) in doublons_removed.items()])
usable_enums = {k: extract_enum_def(k, v) for k, v in enums.items()}
print('spinel_status_t', list(usable_enums['spinel_status_t']))
def wpan_callback(prop, value, tid):
print('call', prop)
pass
spinel_capability_t = usable_enums['spinel_capability_t']
spinel_prop_key_t = usable_enums['spinel_prop_key_t']
MAC_FILTER = usable_enums['MAC_FILTER']
# copy/paste from pyspinel
wpan_api = WpanApi(stream, nodeid)
wpan_api.queue_register(SPINEL.HEADER_DEFAULT)
wpan_api.queue_register(SPINEL.HEADER_ASYNC)
wpan_api.callback_register(spinel_prop_key_t.SPINEL_PROP_STREAM_NET.value, wpan_callback)
caps = wpan_api.prop_get_value(spinel_prop_key_t.SPINEL_PROP_CAPS.value)[0]
for ((cap_id, value),) in caps:
print('cap', spinel_capability_t(cap_id))
print('version', str(wpan_api.prop_get_value(spinel_prop_key_t.SPINEL_PROP_NCP_VERSION.value)))
wpan_api.prop_set_value(spinel_prop_key_t.SPINEL_PROP_PHY_ENABLED.value, True)
result = wpan_api.prop_set_value(spinel_prop_key_t.SPINEL_PROP_MAC_PROMISCUOUS_MODE.value,
MAC_FILTER.SPINEL_MAC_PROMISCUOUS_MODE_FULL.value)
print("open filter result", result)
result = wpan_api.prop_set_value(spinel_prop_key_t.SPINEL_PROP_PHY_CHAN.value, 13)
print("set channel result", result)
result = wpan_api.prop_set_value(spinel_prop_key_t.SPINEL_PROP_MAC_RAW_STREAM_ENABLED.value, 1)
print("stream raw result", result)
tid = SPINEL.HEADER_ASYNC
prop_id = spinel_prop_key_t.SPINEL_PROP_STREAM_RAW.value
while True:
result = wpan_api.queue_wait_for_prop(prop_id, tid)
if result:
print("stream", result)
print('prop', spinel_prop_key_t(result.prop).name)
length = wpan_api.parse_S(result.value)
print('length', length)
pkt = result.value[2:2 + length]
print(pkt)
# metadata format (totally 19 bytes or 26 bytes):
# 0. RSSI(int8)
# 1. Noise Floor(int8)
# 2. Flags(uint16)
# 3. PHY-specific data struct contains:
# 3.0 Channel(uint8)
# 3.1 LQI(uint8)
# 3.2 Timestamp in microseconds(uint64)
# 4. Vendor data struct contains:
# 4.0 Receive error(uint8)
# 5. (optional) MAC data struct contains:
# 5.0 ACK key ID(uint8)
# 5.1 ACK frame counter(uint32)
metadata = wpan_api.parse_fields(
result.value[2 + length:2 + length + 19],
"ccSt(CCX)t(i)")
print('metadata', metadata)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment