[spinel] use full names in string lookup table (#6390)

This commit changes the string lookup tables used in `spinel.c` to
convert the property/command definitions to string to use the full
enum names in the table.

This makes the names "search/grep"-able which is helpful during
renaming/refactoring or when adding a new property (by searching and
copying code for an existing one).
This commit is contained in:
Abtin Keshavarzian
2021-04-02 08:09:05 -07:00
committed by GitHub
parent 63e4b7c9ea
commit f889437dc6
+409 -418
View File
@@ -1153,10 +1153,6 @@ struct spinel_cstr
uint32_t val;
const char *str;
};
#define __SPINEL_CSTR(PREFIX, VALUE) \
{ \
(uint32_t) PREFIX##VALUE, #VALUE \
}
static const char *spinel_to_cstr(const struct spinel_cstr *table, uint32_t val)
{
@@ -1168,468 +1164,463 @@ static const char *spinel_to_cstr(const struct spinel_cstr *table, uint32_t val)
return "UNKNOWN";
}
#define SPINEL_COMMAND_CSTR(VALUE) __SPINEL_CSTR(SPINEL_CMD_, VALUE)
const char *spinel_command_to_cstr(spinel_command_t command)
{
static const struct spinel_cstr spinel_commands_cstr[] = {
SPINEL_COMMAND_CSTR(NOOP),
SPINEL_COMMAND_CSTR(RESET),
SPINEL_COMMAND_CSTR(PROP_VALUE_GET),
SPINEL_COMMAND_CSTR(PROP_VALUE_SET),
SPINEL_COMMAND_CSTR(PROP_VALUE_INSERT),
SPINEL_COMMAND_CSTR(PROP_VALUE_REMOVE),
SPINEL_COMMAND_CSTR(PROP_VALUE_IS),
SPINEL_COMMAND_CSTR(PROP_VALUE_INSERTED),
SPINEL_COMMAND_CSTR(PROP_VALUE_REMOVED),
SPINEL_COMMAND_CSTR(NET_SAVE),
SPINEL_COMMAND_CSTR(NET_CLEAR),
SPINEL_COMMAND_CSTR(NET_RECALL),
SPINEL_COMMAND_CSTR(HBO_OFFLOAD),
SPINEL_COMMAND_CSTR(HBO_RECLAIM),
SPINEL_COMMAND_CSTR(HBO_DROP),
SPINEL_COMMAND_CSTR(HBO_OFFLOADED),
SPINEL_COMMAND_CSTR(HBO_RECLAIMED),
SPINEL_COMMAND_CSTR(HBO_DROPPED),
SPINEL_COMMAND_CSTR(PEEK),
SPINEL_COMMAND_CSTR(PEEK_RET),
SPINEL_COMMAND_CSTR(POKE),
SPINEL_COMMAND_CSTR(PROP_VALUE_MULTI_GET),
SPINEL_COMMAND_CSTR(PROP_VALUE_MULTI_SET),
SPINEL_COMMAND_CSTR(PROP_VALUES_ARE),
{SPINEL_CMD_NOOP, "NOOP"},
{SPINEL_CMD_RESET, "RESET"},
{SPINEL_CMD_PROP_VALUE_GET, "PROP_VALUE_GET"},
{SPINEL_CMD_PROP_VALUE_SET, "PROP_VALUE_SET"},
{SPINEL_CMD_PROP_VALUE_INSERT, "PROP_VALUE_INSERT"},
{SPINEL_CMD_PROP_VALUE_REMOVE, "PROP_VALUE_REMOVE"},
{SPINEL_CMD_PROP_VALUE_IS, "PROP_VALUE_IS"},
{SPINEL_CMD_PROP_VALUE_INSERTED, "PROP_VALUE_INSERTED"},
{SPINEL_CMD_PROP_VALUE_REMOVED, "PROP_VALUE_REMOVED"},
{SPINEL_CMD_NET_SAVE, "NET_SAVE"},
{SPINEL_CMD_NET_CLEAR, "NET_CLEAR"},
{SPINEL_CMD_NET_RECALL, "NET_RECALL"},
{SPINEL_CMD_HBO_OFFLOAD, "HBO_OFFLOAD"},
{SPINEL_CMD_HBO_RECLAIM, "HBO_RECLAIM"},
{SPINEL_CMD_HBO_DROP, "HBO_DROP"},
{SPINEL_CMD_HBO_OFFLOADED, "HBO_OFFLOADED"},
{SPINEL_CMD_HBO_RECLAIMED, "HBO_RECLAIMED"},
{SPINEL_CMD_HBO_DROPPED, "HBO_DROPPED"},
{SPINEL_CMD_PEEK, "PEEK"},
{SPINEL_CMD_PEEK_RET, "PEEK_RET"},
{SPINEL_CMD_POKE, "POKE"},
{SPINEL_CMD_PROP_VALUE_MULTI_GET, "PROP_VALUE_MULTI_GET"},
{SPINEL_CMD_PROP_VALUE_MULTI_SET, "PROP_VALUE_MULTI_SET"},
{SPINEL_CMD_PROP_VALUES_ARE, "PROP_VALUES_ARE"},
{0},
};
return spinel_to_cstr(spinel_commands_cstr, command);
}
#define SPINEL_PROP_CSTR(VALUE) __SPINEL_CSTR(SPINEL_PROP_, VALUE)
const char *spinel_prop_key_to_cstr(spinel_prop_key_t prop_key)
{
static const struct spinel_cstr spinel_prop_cstr[] = {
SPINEL_PROP_CSTR(LAST_STATUS),
SPINEL_PROP_CSTR(PROTOCOL_VERSION),
SPINEL_PROP_CSTR(NCP_VERSION),
SPINEL_PROP_CSTR(INTERFACE_TYPE),
SPINEL_PROP_CSTR(VENDOR_ID),
SPINEL_PROP_CSTR(CAPS),
SPINEL_PROP_CSTR(INTERFACE_COUNT),
SPINEL_PROP_CSTR(POWER_STATE),
SPINEL_PROP_CSTR(HWADDR),
SPINEL_PROP_CSTR(LOCK),
SPINEL_PROP_CSTR(HBO_MEM_MAX),
SPINEL_PROP_CSTR(HBO_BLOCK_MAX),
SPINEL_PROP_CSTR(HOST_POWER_STATE),
SPINEL_PROP_CSTR(MCU_POWER_STATE),
SPINEL_PROP_CSTR(GPIO_CONFIG),
SPINEL_PROP_CSTR(GPIO_STATE),
SPINEL_PROP_CSTR(GPIO_STATE_SET),
SPINEL_PROP_CSTR(GPIO_STATE_CLEAR),
SPINEL_PROP_CSTR(TRNG_32),
SPINEL_PROP_CSTR(TRNG_128),
SPINEL_PROP_CSTR(TRNG_RAW_32),
SPINEL_PROP_CSTR(UNSOL_UPDATE_FILTER),
SPINEL_PROP_CSTR(UNSOL_UPDATE_LIST),
SPINEL_PROP_CSTR(PHY_ENABLED),
SPINEL_PROP_CSTR(PHY_CHAN),
SPINEL_PROP_CSTR(PHY_CHAN_SUPPORTED),
SPINEL_PROP_CSTR(PHY_FREQ),
SPINEL_PROP_CSTR(PHY_CCA_THRESHOLD),
SPINEL_PROP_CSTR(PHY_TX_POWER),
SPINEL_PROP_CSTR(PHY_FEM_LNA_GAIN),
SPINEL_PROP_CSTR(PHY_RSSI),
SPINEL_PROP_CSTR(PHY_RX_SENSITIVITY),
SPINEL_PROP_CSTR(PHY_PCAP_ENABLED),
SPINEL_PROP_CSTR(PHY_CHAN_PREFERRED),
SPINEL_PROP_CSTR(PHY_CHAN_MAX_POWER),
SPINEL_PROP_CSTR(JAM_DETECT_ENABLE),
SPINEL_PROP_CSTR(JAM_DETECTED),
SPINEL_PROP_CSTR(JAM_DETECT_RSSI_THRESHOLD),
SPINEL_PROP_CSTR(JAM_DETECT_WINDOW),
SPINEL_PROP_CSTR(JAM_DETECT_BUSY),
SPINEL_PROP_CSTR(JAM_DETECT_HISTORY_BITMAP),
SPINEL_PROP_CSTR(CHANNEL_MONITOR_SAMPLE_INTERVAL),
SPINEL_PROP_CSTR(CHANNEL_MONITOR_RSSI_THRESHOLD),
SPINEL_PROP_CSTR(CHANNEL_MONITOR_SAMPLE_WINDOW),
SPINEL_PROP_CSTR(CHANNEL_MONITOR_SAMPLE_COUNT),
SPINEL_PROP_CSTR(CHANNEL_MONITOR_CHANNEL_OCCUPANCY),
SPINEL_PROP_CSTR(RADIO_CAPS),
SPINEL_PROP_CSTR(RADIO_COEX_METRICS),
SPINEL_PROP_CSTR(RADIO_COEX_ENABLE),
SPINEL_PROP_CSTR(MAC_SCAN_STATE),
SPINEL_PROP_CSTR(MAC_SCAN_MASK),
SPINEL_PROP_CSTR(MAC_SCAN_PERIOD),
SPINEL_PROP_CSTR(MAC_SCAN_BEACON),
SPINEL_PROP_CSTR(MAC_15_4_LADDR),
SPINEL_PROP_CSTR(MAC_15_4_SADDR),
SPINEL_PROP_CSTR(MAC_15_4_PANID),
SPINEL_PROP_CSTR(MAC_RAW_STREAM_ENABLED),
SPINEL_PROP_CSTR(MAC_PROMISCUOUS_MODE),
SPINEL_PROP_CSTR(MAC_ENERGY_SCAN_RESULT),
SPINEL_PROP_CSTR(MAC_DATA_POLL_PERIOD),
SPINEL_PROP_CSTR(MAC_ALLOWLIST),
SPINEL_PROP_CSTR(MAC_ALLOWLIST_ENABLED),
SPINEL_PROP_CSTR(MAC_EXTENDED_ADDR),
SPINEL_PROP_CSTR(MAC_SRC_MATCH_ENABLED),
SPINEL_PROP_CSTR(MAC_SRC_MATCH_SHORT_ADDRESSES),
SPINEL_PROP_CSTR(MAC_SRC_MATCH_EXTENDED_ADDRESSES),
SPINEL_PROP_CSTR(MAC_DENYLIST),
SPINEL_PROP_CSTR(MAC_DENYLIST_ENABLED),
SPINEL_PROP_CSTR(MAC_FIXED_RSS),
SPINEL_PROP_CSTR(MAC_CCA_FAILURE_RATE),
SPINEL_PROP_CSTR(MAC_MAX_RETRY_NUMBER_DIRECT),
SPINEL_PROP_CSTR(MAC_MAX_RETRY_NUMBER_INDIRECT),
SPINEL_PROP_CSTR(NET_SAVED),
SPINEL_PROP_CSTR(NET_IF_UP),
SPINEL_PROP_CSTR(NET_STACK_UP),
SPINEL_PROP_CSTR(NET_ROLE),
SPINEL_PROP_CSTR(NET_NETWORK_NAME),
SPINEL_PROP_CSTR(NET_XPANID),
SPINEL_PROP_CSTR(NET_MASTER_KEY),
SPINEL_PROP_CSTR(NET_KEY_SEQUENCE_COUNTER),
SPINEL_PROP_CSTR(NET_PARTITION_ID),
SPINEL_PROP_CSTR(NET_REQUIRE_JOIN_EXISTING),
SPINEL_PROP_CSTR(NET_KEY_SWITCH_GUARDTIME),
SPINEL_PROP_CSTR(NET_PSKC),
SPINEL_PROP_CSTR(THREAD_LEADER_ADDR),
SPINEL_PROP_CSTR(THREAD_PARENT),
SPINEL_PROP_CSTR(THREAD_CHILD_TABLE),
SPINEL_PROP_CSTR(THREAD_LEADER_RID),
SPINEL_PROP_CSTR(THREAD_LEADER_WEIGHT),
SPINEL_PROP_CSTR(THREAD_LOCAL_LEADER_WEIGHT),
SPINEL_PROP_CSTR(THREAD_NETWORK_DATA),
SPINEL_PROP_CSTR(THREAD_NETWORK_DATA_VERSION),
SPINEL_PROP_CSTR(THREAD_STABLE_NETWORK_DATA),
SPINEL_PROP_CSTR(THREAD_STABLE_NETWORK_DATA_VERSION),
SPINEL_PROP_CSTR(THREAD_ON_MESH_NETS),
SPINEL_PROP_CSTR(THREAD_OFF_MESH_ROUTES),
SPINEL_PROP_CSTR(THREAD_ASSISTING_PORTS),
SPINEL_PROP_CSTR(THREAD_ALLOW_LOCAL_NET_DATA_CHANGE),
SPINEL_PROP_CSTR(THREAD_MODE),
SPINEL_PROP_CSTR(THREAD_CHILD_TIMEOUT),
SPINEL_PROP_CSTR(THREAD_RLOC16),
SPINEL_PROP_CSTR(THREAD_ROUTER_UPGRADE_THRESHOLD),
SPINEL_PROP_CSTR(THREAD_CONTEXT_REUSE_DELAY),
SPINEL_PROP_CSTR(THREAD_NETWORK_ID_TIMEOUT),
SPINEL_PROP_CSTR(THREAD_ACTIVE_ROUTER_IDS),
SPINEL_PROP_CSTR(THREAD_RLOC16_DEBUG_PASSTHRU),
SPINEL_PROP_CSTR(THREAD_ROUTER_ROLE_ENABLED),
SPINEL_PROP_CSTR(THREAD_ROUTER_DOWNGRADE_THRESHOLD),
SPINEL_PROP_CSTR(THREAD_ROUTER_SELECTION_JITTER),
SPINEL_PROP_CSTR(THREAD_PREFERRED_ROUTER_ID),
SPINEL_PROP_CSTR(THREAD_NEIGHBOR_TABLE),
SPINEL_PROP_CSTR(THREAD_CHILD_COUNT_MAX),
SPINEL_PROP_CSTR(THREAD_LEADER_NETWORK_DATA),
SPINEL_PROP_CSTR(THREAD_STABLE_LEADER_NETWORK_DATA),
SPINEL_PROP_CSTR(THREAD_JOINERS),
SPINEL_PROP_CSTR(THREAD_COMMISSIONER_ENABLED),
SPINEL_PROP_CSTR(THREAD_TMF_PROXY_ENABLED),
SPINEL_PROP_CSTR(THREAD_TMF_PROXY_STREAM),
SPINEL_PROP_CSTR(THREAD_UDP_FORWARD_STREAM),
SPINEL_PROP_CSTR(THREAD_DISCOVERY_SCAN_JOINER_FLAG),
SPINEL_PROP_CSTR(THREAD_DISCOVERY_SCAN_ENABLE_FILTERING),
SPINEL_PROP_CSTR(THREAD_DISCOVERY_SCAN_PANID),
SPINEL_PROP_CSTR(THREAD_STEERING_DATA),
SPINEL_PROP_CSTR(THREAD_ROUTER_TABLE),
SPINEL_PROP_CSTR(THREAD_ACTIVE_DATASET),
SPINEL_PROP_CSTR(THREAD_PENDING_DATASET),
SPINEL_PROP_CSTR(THREAD_MGMT_SET_ACTIVE_DATASET),
SPINEL_PROP_CSTR(THREAD_MGMT_SET_PENDING_DATASET),
SPINEL_PROP_CSTR(DATASET_ACTIVE_TIMESTAMP),
SPINEL_PROP_CSTR(DATASET_PENDING_TIMESTAMP),
SPINEL_PROP_CSTR(DATASET_DELAY_TIMER),
SPINEL_PROP_CSTR(DATASET_SECURITY_POLICY),
SPINEL_PROP_CSTR(DATASET_RAW_TLVS),
SPINEL_PROP_CSTR(THREAD_CHILD_TABLE_ADDRESSES),
SPINEL_PROP_CSTR(THREAD_NEIGHBOR_TABLE_ERROR_RATES),
SPINEL_PROP_CSTR(THREAD_ADDRESS_CACHE_TABLE),
SPINEL_PROP_CSTR(THREAD_MGMT_GET_ACTIVE_DATASET),
SPINEL_PROP_CSTR(THREAD_MGMT_GET_PENDING_DATASET),
SPINEL_PROP_CSTR(DATASET_DEST_ADDRESS),
SPINEL_PROP_CSTR(THREAD_NEW_DATASET),
SPINEL_PROP_CSTR(THREAD_CSL_PERIOD),
SPINEL_PROP_CSTR(THREAD_CSL_TIMEOUT),
SPINEL_PROP_CSTR(THREAD_CSL_CHANNEL),
SPINEL_PROP_CSTR(THREAD_DOMAIN_NAME),
SPINEL_PROP_CSTR(THREAD_MLR_REQUEST),
SPINEL_PROP_CSTR(THREAD_MLR_RESPONSE),
SPINEL_PROP_CSTR(THREAD_BACKBONE_ROUTER_PRIMARY),
SPINEL_PROP_CSTR(THREAD_BACKBONE_ROUTER_LOCAL_STATE),
SPINEL_PROP_CSTR(THREAD_BACKBONE_ROUTER_LOCAL_CONFIG),
SPINEL_PROP_CSTR(THREAD_BACKBONE_ROUTER_LOCAL_REGISTER),
SPINEL_PROP_CSTR(THREAD_BACKBONE_ROUTER_LOCAL_REGISTRATION_JITTER),
SPINEL_PROP_CSTR(MESHCOP_JOINER_STATE),
SPINEL_PROP_CSTR(MESHCOP_JOINER_COMMISSIONING),
SPINEL_PROP_CSTR(IPV6_LL_ADDR),
SPINEL_PROP_CSTR(IPV6_ML_ADDR),
SPINEL_PROP_CSTR(IPV6_ML_PREFIX),
SPINEL_PROP_CSTR(IPV6_ADDRESS_TABLE),
SPINEL_PROP_CSTR(IPV6_ROUTE_TABLE),
SPINEL_PROP_CSTR(IPV6_ICMP_PING_OFFLOAD),
SPINEL_PROP_CSTR(IPV6_MULTICAST_ADDRESS_TABLE),
SPINEL_PROP_CSTR(IPV6_ICMP_PING_OFFLOAD_MODE),
SPINEL_PROP_CSTR(STREAM_DEBUG),
SPINEL_PROP_CSTR(STREAM_RAW),
SPINEL_PROP_CSTR(STREAM_NET),
SPINEL_PROP_CSTR(STREAM_NET_INSECURE),
SPINEL_PROP_CSTR(STREAM_LOG),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_STATE),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_JOINERS),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_PROVISIONING_URL),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_SESSION_ID),
SPINEL_PROP_CSTR(MESHCOP_JOINER_DISCERNER),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_ANNOUNCE_BEGIN),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_ENERGY_SCAN),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_ENERGY_SCAN_RESULT),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_PAN_ID_QUERY),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_PAN_ID_CONFLICT_RESULT),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_MGMT_GET),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_MGMT_SET),
SPINEL_PROP_CSTR(MESHCOP_COMMISSIONER_GENERATE_PSKC),
SPINEL_PROP_CSTR(CHANNEL_MANAGER_NEW_CHANNEL),
SPINEL_PROP_CSTR(CHANNEL_MANAGER_DELAY),
SPINEL_PROP_CSTR(CHANNEL_MANAGER_SUPPORTED_CHANNELS),
SPINEL_PROP_CSTR(CHANNEL_MANAGER_FAVORED_CHANNELS),
SPINEL_PROP_CSTR(CHANNEL_MANAGER_CHANNEL_SELECT),
SPINEL_PROP_CSTR(CHANNEL_MANAGER_AUTO_SELECT_ENABLED),
SPINEL_PROP_CSTR(CHANNEL_MANAGER_AUTO_SELECT_INTERVAL),
SPINEL_PROP_CSTR(THREAD_NETWORK_TIME),
SPINEL_PROP_CSTR(TIME_SYNC_PERIOD),
SPINEL_PROP_CSTR(TIME_SYNC_XTAL_THRESHOLD),
SPINEL_PROP_CSTR(CHILD_SUPERVISION_INTERVAL),
SPINEL_PROP_CSTR(CHILD_SUPERVISION_CHECK_TIMEOUT),
SPINEL_PROP_CSTR(RCP_VERSION),
SPINEL_PROP_CSTR(PARENT_RESPONSE_INFO),
SPINEL_PROP_CSTR(SLAAC_ENABLED),
SPINEL_PROP_CSTR(SUPPORTED_RADIO_LINKS),
SPINEL_PROP_CSTR(NEIGHBOR_TABLE_MULTI_RADIO_INFO),
SPINEL_PROP_CSTR(SRP_CLIENT_START),
SPINEL_PROP_CSTR(SRP_CLIENT_LEASE_INTERVAL),
SPINEL_PROP_CSTR(SRP_CLIENT_KEY_LEASE_INTERVAL),
SPINEL_PROP_CSTR(SRP_CLIENT_HOST_INFO),
SPINEL_PROP_CSTR(SRP_CLIENT_HOST_NAME),
SPINEL_PROP_CSTR(SRP_CLIENT_HOST_ADDRESSES),
SPINEL_PROP_CSTR(SRP_CLIENT_SERVICES),
SPINEL_PROP_CSTR(SRP_CLIENT_HOST_SERVICES_REMOVE),
SPINEL_PROP_CSTR(SRP_CLIENT_HOST_SERVICES_CLEAR),
SPINEL_PROP_CSTR(SRP_CLIENT_EVENT),
SPINEL_PROP_CSTR(SRP_CLIENT_SERVICE_KEY_ENABLED),
SPINEL_PROP_CSTR(SERVER_ALLOW_LOCAL_DATA_CHANGE),
SPINEL_PROP_CSTR(SERVER_SERVICES),
SPINEL_PROP_CSTR(SERVER_LEADER_SERVICES),
SPINEL_PROP_CSTR(RCP_API_VERSION),
SPINEL_PROP_CSTR(UART_BITRATE),
SPINEL_PROP_CSTR(UART_XON_XOFF),
SPINEL_PROP_CSTR(15_4_PIB_PHY_CHANNELS_SUPPORTED),
SPINEL_PROP_CSTR(15_4_PIB_MAC_PROMISCUOUS_MODE),
SPINEL_PROP_CSTR(15_4_PIB_MAC_SECURITY_ENABLED),
SPINEL_PROP_CSTR(CNTR_RESET),
SPINEL_PROP_CSTR(CNTR_TX_PKT_TOTAL),
SPINEL_PROP_CSTR(CNTR_TX_PKT_ACK_REQ),
SPINEL_PROP_CSTR(CNTR_TX_PKT_ACKED),
SPINEL_PROP_CSTR(CNTR_TX_PKT_NO_ACK_REQ),
SPINEL_PROP_CSTR(CNTR_TX_PKT_DATA),
SPINEL_PROP_CSTR(CNTR_TX_PKT_DATA_POLL),
SPINEL_PROP_CSTR(CNTR_TX_PKT_BEACON),
SPINEL_PROP_CSTR(CNTR_TX_PKT_BEACON_REQ),
SPINEL_PROP_CSTR(CNTR_TX_PKT_OTHER),
SPINEL_PROP_CSTR(CNTR_TX_PKT_RETRY),
SPINEL_PROP_CSTR(CNTR_TX_ERR_CCA),
SPINEL_PROP_CSTR(CNTR_TX_PKT_UNICAST),
SPINEL_PROP_CSTR(CNTR_TX_PKT_BROADCAST),
SPINEL_PROP_CSTR(CNTR_TX_ERR_ABORT),
SPINEL_PROP_CSTR(CNTR_RX_PKT_TOTAL),
SPINEL_PROP_CSTR(CNTR_RX_PKT_DATA),
SPINEL_PROP_CSTR(CNTR_RX_PKT_DATA_POLL),
SPINEL_PROP_CSTR(CNTR_RX_PKT_BEACON),
SPINEL_PROP_CSTR(CNTR_RX_PKT_BEACON_REQ),
SPINEL_PROP_CSTR(CNTR_RX_PKT_OTHER),
SPINEL_PROP_CSTR(CNTR_RX_PKT_FILT_WL),
SPINEL_PROP_CSTR(CNTR_RX_PKT_FILT_DA),
SPINEL_PROP_CSTR(CNTR_RX_ERR_EMPTY),
SPINEL_PROP_CSTR(CNTR_RX_ERR_UKWN_NBR),
SPINEL_PROP_CSTR(CNTR_RX_ERR_NVLD_SADDR),
SPINEL_PROP_CSTR(CNTR_RX_ERR_SECURITY),
SPINEL_PROP_CSTR(CNTR_RX_ERR_BAD_FCS),
SPINEL_PROP_CSTR(CNTR_RX_ERR_OTHER),
SPINEL_PROP_CSTR(CNTR_RX_PKT_DUP),
SPINEL_PROP_CSTR(CNTR_RX_PKT_UNICAST),
SPINEL_PROP_CSTR(CNTR_RX_PKT_BROADCAST),
SPINEL_PROP_CSTR(CNTR_TX_IP_SEC_TOTAL),
SPINEL_PROP_CSTR(CNTR_TX_IP_INSEC_TOTAL),
SPINEL_PROP_CSTR(CNTR_TX_IP_DROPPED),
SPINEL_PROP_CSTR(CNTR_RX_IP_SEC_TOTAL),
SPINEL_PROP_CSTR(CNTR_RX_IP_INSEC_TOTAL),
SPINEL_PROP_CSTR(CNTR_RX_IP_DROPPED),
SPINEL_PROP_CSTR(CNTR_TX_SPINEL_TOTAL),
SPINEL_PROP_CSTR(CNTR_RX_SPINEL_TOTAL),
SPINEL_PROP_CSTR(CNTR_RX_SPINEL_ERR),
SPINEL_PROP_CSTR(CNTR_RX_SPINEL_OUT_OF_ORDER_TID),
SPINEL_PROP_CSTR(CNTR_IP_TX_SUCCESS),
SPINEL_PROP_CSTR(CNTR_IP_RX_SUCCESS),
SPINEL_PROP_CSTR(CNTR_IP_TX_FAILURE),
SPINEL_PROP_CSTR(CNTR_IP_RX_FAILURE),
SPINEL_PROP_CSTR(MSG_BUFFER_COUNTERS),
SPINEL_PROP_CSTR(CNTR_ALL_MAC_COUNTERS),
SPINEL_PROP_CSTR(CNTR_MLE_COUNTERS),
SPINEL_PROP_CSTR(CNTR_ALL_IP_COUNTERS),
SPINEL_PROP_CSTR(CNTR_MAC_RETRY_HISTOGRAM),
SPINEL_PROP_CSTR(NEST_STREAM_MFG),
SPINEL_PROP_CSTR(NEST_LEGACY_ULA_PREFIX),
SPINEL_PROP_CSTR(NEST_LEGACY_LAST_NODE_JOINED),
SPINEL_PROP_CSTR(DEBUG_TEST_ASSERT),
SPINEL_PROP_CSTR(DEBUG_NCP_LOG_LEVEL),
SPINEL_PROP_CSTR(DEBUG_TEST_WATCHDOG),
SPINEL_PROP_CSTR(RCP_MAC_FRAME_COUNTER),
SPINEL_PROP_CSTR(RCP_MAC_KEY),
SPINEL_PROP_CSTR(DEBUG_LOG_TIMESTAMP_BASE),
SPINEL_PROP_CSTR(DEBUG_TREL_TEST_MODE_ENABLE),
{SPINEL_PROP_LAST_STATUS, "LAST_STATUS"},
{SPINEL_PROP_PROTOCOL_VERSION, "PROTOCOL_VERSION"},
{SPINEL_PROP_NCP_VERSION, "NCP_VERSION"},
{SPINEL_PROP_INTERFACE_TYPE, "INTERFACE_TYPE"},
{SPINEL_PROP_VENDOR_ID, "VENDOR_ID"},
{SPINEL_PROP_CAPS, "CAPS"},
{SPINEL_PROP_INTERFACE_COUNT, "INTERFACE_COUNT"},
{SPINEL_PROP_POWER_STATE, "POWER_STATE"},
{SPINEL_PROP_HWADDR, "HWADDR"},
{SPINEL_PROP_LOCK, "LOCK"},
{SPINEL_PROP_HBO_MEM_MAX, "HBO_MEM_MAX"},
{SPINEL_PROP_HBO_BLOCK_MAX, "HBO_BLOCK_MAX"},
{SPINEL_PROP_HOST_POWER_STATE, "HOST_POWER_STATE"},
{SPINEL_PROP_MCU_POWER_STATE, "MCU_POWER_STATE"},
{SPINEL_PROP_GPIO_CONFIG, "GPIO_CONFIG"},
{SPINEL_PROP_GPIO_STATE, "GPIO_STATE"},
{SPINEL_PROP_GPIO_STATE_SET, "GPIO_STATE_SET"},
{SPINEL_PROP_GPIO_STATE_CLEAR, "GPIO_STATE_CLEAR"},
{SPINEL_PROP_TRNG_32, "TRNG_32"},
{SPINEL_PROP_TRNG_128, "TRNG_128"},
{SPINEL_PROP_TRNG_RAW_32, "TRNG_RAW_32"},
{SPINEL_PROP_UNSOL_UPDATE_FILTER, "UNSOL_UPDATE_FILTER"},
{SPINEL_PROP_UNSOL_UPDATE_LIST, "UNSOL_UPDATE_LIST"},
{SPINEL_PROP_PHY_ENABLED, "PHY_ENABLED"},
{SPINEL_PROP_PHY_CHAN, "PHY_CHAN"},
{SPINEL_PROP_PHY_CHAN_SUPPORTED, "PHY_CHAN_SUPPORTED"},
{SPINEL_PROP_PHY_FREQ, "PHY_FREQ"},
{SPINEL_PROP_PHY_CCA_THRESHOLD, "PHY_CCA_THRESHOLD"},
{SPINEL_PROP_PHY_TX_POWER, "PHY_TX_POWER"},
{SPINEL_PROP_PHY_FEM_LNA_GAIN, "PHY_FEM_LNA_GAIN"},
{SPINEL_PROP_PHY_RSSI, "PHY_RSSI"},
{SPINEL_PROP_PHY_RX_SENSITIVITY, "PHY_RX_SENSITIVITY"},
{SPINEL_PROP_PHY_PCAP_ENABLED, "PHY_PCAP_ENABLED"},
{SPINEL_PROP_PHY_CHAN_PREFERRED, "PHY_CHAN_PREFERRED"},
{SPINEL_PROP_PHY_CHAN_MAX_POWER, "PHY_CHAN_MAX_POWER"},
{SPINEL_PROP_JAM_DETECT_ENABLE, "JAM_DETECT_ENABLE"},
{SPINEL_PROP_JAM_DETECTED, "JAM_DETECTED"},
{SPINEL_PROP_JAM_DETECT_RSSI_THRESHOLD, "JAM_DETECT_RSSI_THRESHOLD"},
{SPINEL_PROP_JAM_DETECT_WINDOW, "JAM_DETECT_WINDOW"},
{SPINEL_PROP_JAM_DETECT_BUSY, "JAM_DETECT_BUSY"},
{SPINEL_PROP_JAM_DETECT_HISTORY_BITMAP, "JAM_DETECT_HISTORY_BITMAP"},
{SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_INTERVAL, "CHANNEL_MONITOR_SAMPLE_INTERVAL"},
{SPINEL_PROP_CHANNEL_MONITOR_RSSI_THRESHOLD, "CHANNEL_MONITOR_RSSI_THRESHOLD"},
{SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_WINDOW, "CHANNEL_MONITOR_SAMPLE_WINDOW"},
{SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_COUNT, "CHANNEL_MONITOR_SAMPLE_COUNT"},
{SPINEL_PROP_CHANNEL_MONITOR_CHANNEL_OCCUPANCY, "CHANNEL_MONITOR_CHANNEL_OCCUPANCY"},
{SPINEL_PROP_RADIO_CAPS, "RADIO_CAPS"},
{SPINEL_PROP_RADIO_COEX_METRICS, "RADIO_COEX_METRICS"},
{SPINEL_PROP_RADIO_COEX_ENABLE, "RADIO_COEX_ENABLE"},
{SPINEL_PROP_MAC_SCAN_STATE, "MAC_SCAN_STATE"},
{SPINEL_PROP_MAC_SCAN_MASK, "MAC_SCAN_MASK"},
{SPINEL_PROP_MAC_SCAN_PERIOD, "MAC_SCAN_PERIOD"},
{SPINEL_PROP_MAC_SCAN_BEACON, "MAC_SCAN_BEACON"},
{SPINEL_PROP_MAC_15_4_LADDR, "MAC_15_4_LADDR"},
{SPINEL_PROP_MAC_15_4_SADDR, "MAC_15_4_SADDR"},
{SPINEL_PROP_MAC_15_4_PANID, "MAC_15_4_PANID"},
{SPINEL_PROP_MAC_RAW_STREAM_ENABLED, "MAC_RAW_STREAM_ENABLED"},
{SPINEL_PROP_MAC_PROMISCUOUS_MODE, "MAC_PROMISCUOUS_MODE"},
{SPINEL_PROP_MAC_ENERGY_SCAN_RESULT, "MAC_ENERGY_SCAN_RESULT"},
{SPINEL_PROP_MAC_DATA_POLL_PERIOD, "MAC_DATA_POLL_PERIOD"},
{SPINEL_PROP_MAC_ALLOWLIST, "MAC_ALLOWLIST"},
{SPINEL_PROP_MAC_ALLOWLIST_ENABLED, "MAC_ALLOWLIST_ENABLED"},
{SPINEL_PROP_MAC_EXTENDED_ADDR, "MAC_EXTENDED_ADDR"},
{SPINEL_PROP_MAC_SRC_MATCH_ENABLED, "MAC_SRC_MATCH_ENABLED"},
{SPINEL_PROP_MAC_SRC_MATCH_SHORT_ADDRESSES, "MAC_SRC_MATCH_SHORT_ADDRESSES"},
{SPINEL_PROP_MAC_SRC_MATCH_EXTENDED_ADDRESSES, "MAC_SRC_MATCH_EXTENDED_ADDRESSES"},
{SPINEL_PROP_MAC_DENYLIST, "MAC_DENYLIST"},
{SPINEL_PROP_MAC_DENYLIST_ENABLED, "MAC_DENYLIST_ENABLED"},
{SPINEL_PROP_MAC_FIXED_RSS, "MAC_FIXED_RSS"},
{SPINEL_PROP_MAC_CCA_FAILURE_RATE, "MAC_CCA_FAILURE_RATE"},
{SPINEL_PROP_MAC_MAX_RETRY_NUMBER_DIRECT, "MAC_MAX_RETRY_NUMBER_DIRECT"},
{SPINEL_PROP_MAC_MAX_RETRY_NUMBER_INDIRECT, "MAC_MAX_RETRY_NUMBER_INDIRECT"},
{SPINEL_PROP_NET_SAVED, "NET_SAVED"},
{SPINEL_PROP_NET_IF_UP, "NET_IF_UP"},
{SPINEL_PROP_NET_STACK_UP, "NET_STACK_UP"},
{SPINEL_PROP_NET_ROLE, "NET_ROLE"},
{SPINEL_PROP_NET_NETWORK_NAME, "NET_NETWORK_NAME"},
{SPINEL_PROP_NET_XPANID, "NET_XPANID"},
{SPINEL_PROP_NET_MASTER_KEY, "NET_MASTER_KEY"},
{SPINEL_PROP_NET_KEY_SEQUENCE_COUNTER, "NET_KEY_SEQUENCE_COUNTER"},
{SPINEL_PROP_NET_PARTITION_ID, "NET_PARTITION_ID"},
{SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING, "NET_REQUIRE_JOIN_EXISTING"},
{SPINEL_PROP_NET_KEY_SWITCH_GUARDTIME, "NET_KEY_SWITCH_GUARDTIME"},
{SPINEL_PROP_NET_PSKC, "NET_PSKC"},
{SPINEL_PROP_THREAD_LEADER_ADDR, "THREAD_LEADER_ADDR"},
{SPINEL_PROP_THREAD_PARENT, "THREAD_PARENT"},
{SPINEL_PROP_THREAD_CHILD_TABLE, "THREAD_CHILD_TABLE"},
{SPINEL_PROP_THREAD_LEADER_RID, "THREAD_LEADER_RID"},
{SPINEL_PROP_THREAD_LEADER_WEIGHT, "THREAD_LEADER_WEIGHT"},
{SPINEL_PROP_THREAD_LOCAL_LEADER_WEIGHT, "THREAD_LOCAL_LEADER_WEIGHT"},
{SPINEL_PROP_THREAD_NETWORK_DATA, "THREAD_NETWORK_DATA"},
{SPINEL_PROP_THREAD_NETWORK_DATA_VERSION, "THREAD_NETWORK_DATA_VERSION"},
{SPINEL_PROP_THREAD_STABLE_NETWORK_DATA, "THREAD_STABLE_NETWORK_DATA"},
{SPINEL_PROP_THREAD_STABLE_NETWORK_DATA_VERSION, "THREAD_STABLE_NETWORK_DATA_VERSION"},
{SPINEL_PROP_THREAD_ON_MESH_NETS, "THREAD_ON_MESH_NETS"},
{SPINEL_PROP_THREAD_OFF_MESH_ROUTES, "THREAD_OFF_MESH_ROUTES"},
{SPINEL_PROP_THREAD_ASSISTING_PORTS, "THREAD_ASSISTING_PORTS"},
{SPINEL_PROP_THREAD_ALLOW_LOCAL_NET_DATA_CHANGE, "THREAD_ALLOW_LOCAL_NET_DATA_CHANGE"},
{SPINEL_PROP_THREAD_MODE, "THREAD_MODE"},
{SPINEL_PROP_THREAD_CHILD_TIMEOUT, "THREAD_CHILD_TIMEOUT"},
{SPINEL_PROP_THREAD_RLOC16, "THREAD_RLOC16"},
{SPINEL_PROP_THREAD_ROUTER_UPGRADE_THRESHOLD, "THREAD_ROUTER_UPGRADE_THRESHOLD"},
{SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY, "THREAD_CONTEXT_REUSE_DELAY"},
{SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT, "THREAD_NETWORK_ID_TIMEOUT"},
{SPINEL_PROP_THREAD_ACTIVE_ROUTER_IDS, "THREAD_ACTIVE_ROUTER_IDS"},
{SPINEL_PROP_THREAD_RLOC16_DEBUG_PASSTHRU, "THREAD_RLOC16_DEBUG_PASSTHRU"},
{SPINEL_PROP_THREAD_ROUTER_ROLE_ENABLED, "THREAD_ROUTER_ROLE_ENABLED"},
{SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD, "THREAD_ROUTER_DOWNGRADE_THRESHOLD"},
{SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER, "THREAD_ROUTER_SELECTION_JITTER"},
{SPINEL_PROP_THREAD_PREFERRED_ROUTER_ID, "THREAD_PREFERRED_ROUTER_ID"},
{SPINEL_PROP_THREAD_NEIGHBOR_TABLE, "THREAD_NEIGHBOR_TABLE"},
{SPINEL_PROP_THREAD_CHILD_COUNT_MAX, "THREAD_CHILD_COUNT_MAX"},
{SPINEL_PROP_THREAD_LEADER_NETWORK_DATA, "THREAD_LEADER_NETWORK_DATA"},
{SPINEL_PROP_THREAD_STABLE_LEADER_NETWORK_DATA, "THREAD_STABLE_LEADER_NETWORK_DATA"},
{SPINEL_PROP_THREAD_JOINERS, "THREAD_JOINERS"},
{SPINEL_PROP_THREAD_COMMISSIONER_ENABLED, "THREAD_COMMISSIONER_ENABLED"},
{SPINEL_PROP_THREAD_TMF_PROXY_ENABLED, "THREAD_TMF_PROXY_ENABLED"},
{SPINEL_PROP_THREAD_TMF_PROXY_STREAM, "THREAD_TMF_PROXY_STREAM"},
{SPINEL_PROP_THREAD_UDP_FORWARD_STREAM, "THREAD_UDP_FORWARD_STREAM"},
{SPINEL_PROP_THREAD_DISCOVERY_SCAN_JOINER_FLAG, "THREAD_DISCOVERY_SCAN_JOINER_FLAG"},
{SPINEL_PROP_THREAD_DISCOVERY_SCAN_ENABLE_FILTERING, "THREAD_DISCOVERY_SCAN_ENABLE_FILTERING"},
{SPINEL_PROP_THREAD_DISCOVERY_SCAN_PANID, "THREAD_DISCOVERY_SCAN_PANID"},
{SPINEL_PROP_THREAD_STEERING_DATA, "THREAD_STEERING_DATA"},
{SPINEL_PROP_THREAD_ROUTER_TABLE, "THREAD_ROUTER_TABLE"},
{SPINEL_PROP_THREAD_ACTIVE_DATASET, "THREAD_ACTIVE_DATASET"},
{SPINEL_PROP_THREAD_PENDING_DATASET, "THREAD_PENDING_DATASET"},
{SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET, "THREAD_MGMT_SET_ACTIVE_DATASET"},
{SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET, "THREAD_MGMT_SET_PENDING_DATASET"},
{SPINEL_PROP_DATASET_ACTIVE_TIMESTAMP, "DATASET_ACTIVE_TIMESTAMP"},
{SPINEL_PROP_DATASET_PENDING_TIMESTAMP, "DATASET_PENDING_TIMESTAMP"},
{SPINEL_PROP_DATASET_DELAY_TIMER, "DATASET_DELAY_TIMER"},
{SPINEL_PROP_DATASET_SECURITY_POLICY, "DATASET_SECURITY_POLICY"},
{SPINEL_PROP_DATASET_RAW_TLVS, "DATASET_RAW_TLVS"},
{SPINEL_PROP_THREAD_CHILD_TABLE_ADDRESSES, "THREAD_CHILD_TABLE_ADDRESSES"},
{SPINEL_PROP_THREAD_NEIGHBOR_TABLE_ERROR_RATES, "THREAD_NEIGHBOR_TABLE_ERROR_RATES"},
{SPINEL_PROP_THREAD_ADDRESS_CACHE_TABLE, "THREAD_ADDRESS_CACHE_TABLE"},
{SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET, "THREAD_MGMT_GET_ACTIVE_DATASET"},
{SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET, "THREAD_MGMT_GET_PENDING_DATASET"},
{SPINEL_PROP_DATASET_DEST_ADDRESS, "DATASET_DEST_ADDRESS"},
{SPINEL_PROP_THREAD_NEW_DATASET, "THREAD_NEW_DATASET"},
{SPINEL_PROP_THREAD_CSL_PERIOD, "THREAD_CSL_PERIOD"},
{SPINEL_PROP_THREAD_CSL_TIMEOUT, "THREAD_CSL_TIMEOUT"},
{SPINEL_PROP_THREAD_CSL_CHANNEL, "THREAD_CSL_CHANNEL"},
{SPINEL_PROP_THREAD_DOMAIN_NAME, "THREAD_DOMAIN_NAME"},
{SPINEL_PROP_THREAD_MLR_REQUEST, "THREAD_MLR_REQUEST"},
{SPINEL_PROP_THREAD_MLR_RESPONSE, "THREAD_MLR_RESPONSE"},
{SPINEL_PROP_THREAD_BACKBONE_ROUTER_PRIMARY, "THREAD_BACKBONE_ROUTER_PRIMARY"},
{SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_STATE, "THREAD_BACKBONE_ROUTER_LOCAL_STATE"},
{SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_CONFIG, "THREAD_BACKBONE_ROUTER_LOCAL_CONFIG"},
{SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_REGISTER, "THREAD_BACKBONE_ROUTER_LOCAL_REGISTER"},
{SPINEL_PROP_THREAD_BACKBONE_ROUTER_LOCAL_REGISTRATION_JITTER,
"THREAD_BACKBONE_ROUTER_LOCAL_REGISTRATION_JITTER"},
{SPINEL_PROP_MESHCOP_JOINER_STATE, "MESHCOP_JOINER_STATE"},
{SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING, "MESHCOP_JOINER_COMMISSIONING"},
{SPINEL_PROP_IPV6_LL_ADDR, "IPV6_LL_ADDR"},
{SPINEL_PROP_IPV6_ML_ADDR, "IPV6_ML_ADDR"},
{SPINEL_PROP_IPV6_ML_PREFIX, "IPV6_ML_PREFIX"},
{SPINEL_PROP_IPV6_ADDRESS_TABLE, "IPV6_ADDRESS_TABLE"},
{SPINEL_PROP_IPV6_ROUTE_TABLE, "IPV6_ROUTE_TABLE"},
{SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD, "IPV6_ICMP_PING_OFFLOAD"},
{SPINEL_PROP_IPV6_MULTICAST_ADDRESS_TABLE, "IPV6_MULTICAST_ADDRESS_TABLE"},
{SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD_MODE, "IPV6_ICMP_PING_OFFLOAD_MODE"},
{SPINEL_PROP_STREAM_DEBUG, "STREAM_DEBUG"},
{SPINEL_PROP_STREAM_RAW, "STREAM_RAW"},
{SPINEL_PROP_STREAM_NET, "STREAM_NET"},
{SPINEL_PROP_STREAM_NET_INSECURE, "STREAM_NET_INSECURE"},
{SPINEL_PROP_STREAM_LOG, "STREAM_LOG"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_STATE, "MESHCOP_COMMISSIONER_STATE"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_JOINERS, "MESHCOP_COMMISSIONER_JOINERS"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_PROVISIONING_URL, "MESHCOP_COMMISSIONER_PROVISIONING_URL"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_SESSION_ID, "MESHCOP_COMMISSIONER_SESSION_ID"},
{SPINEL_PROP_MESHCOP_JOINER_DISCERNER, "MESHCOP_JOINER_DISCERNER"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_ANNOUNCE_BEGIN, "MESHCOP_COMMISSIONER_ANNOUNCE_BEGIN"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN, "MESHCOP_COMMISSIONER_ENERGY_SCAN"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN_RESULT, "MESHCOP_COMMISSIONER_ENERGY_SCAN_RESULT"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_QUERY, "MESHCOP_COMMISSIONER_PAN_ID_QUERY"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_CONFLICT_RESULT, "MESHCOP_COMMISSIONER_PAN_ID_CONFLICT_RESULT"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_MGMT_GET, "MESHCOP_COMMISSIONER_MGMT_GET"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_MGMT_SET, "MESHCOP_COMMISSIONER_MGMT_SET"},
{SPINEL_PROP_MESHCOP_COMMISSIONER_GENERATE_PSKC, "MESHCOP_COMMISSIONER_GENERATE_PSKC"},
{SPINEL_PROP_CHANNEL_MANAGER_NEW_CHANNEL, "CHANNEL_MANAGER_NEW_CHANNEL"},
{SPINEL_PROP_CHANNEL_MANAGER_DELAY, "CHANNEL_MANAGER_DELAY"},
{SPINEL_PROP_CHANNEL_MANAGER_SUPPORTED_CHANNELS, "CHANNEL_MANAGER_SUPPORTED_CHANNELS"},
{SPINEL_PROP_CHANNEL_MANAGER_FAVORED_CHANNELS, "CHANNEL_MANAGER_FAVORED_CHANNELS"},
{SPINEL_PROP_CHANNEL_MANAGER_CHANNEL_SELECT, "CHANNEL_MANAGER_CHANNEL_SELECT"},
{SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_ENABLED, "CHANNEL_MANAGER_AUTO_SELECT_ENABLED"},
{SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_INTERVAL, "CHANNEL_MANAGER_AUTO_SELECT_INTERVAL"},
{SPINEL_PROP_THREAD_NETWORK_TIME, "THREAD_NETWORK_TIME"},
{SPINEL_PROP_TIME_SYNC_PERIOD, "TIME_SYNC_PERIOD"},
{SPINEL_PROP_TIME_SYNC_XTAL_THRESHOLD, "TIME_SYNC_XTAL_THRESHOLD"},
{SPINEL_PROP_CHILD_SUPERVISION_INTERVAL, "CHILD_SUPERVISION_INTERVAL"},
{SPINEL_PROP_CHILD_SUPERVISION_CHECK_TIMEOUT, "CHILD_SUPERVISION_CHECK_TIMEOUT"},
{SPINEL_PROP_RCP_VERSION, "RCP_VERSION"},
{SPINEL_PROP_PARENT_RESPONSE_INFO, "PARENT_RESPONSE_INFO"},
{SPINEL_PROP_SLAAC_ENABLED, "SLAAC_ENABLED"},
{SPINEL_PROP_SUPPORTED_RADIO_LINKS, "SUPPORTED_RADIO_LINKS"},
{SPINEL_PROP_NEIGHBOR_TABLE_MULTI_RADIO_INFO, "NEIGHBOR_TABLE_MULTI_RADIO_INFO"},
{SPINEL_PROP_SRP_CLIENT_START, "SRP_CLIENT_START"},
{SPINEL_PROP_SRP_CLIENT_LEASE_INTERVAL, "SRP_CLIENT_LEASE_INTERVAL"},
{SPINEL_PROP_SRP_CLIENT_KEY_LEASE_INTERVAL, "SRP_CLIENT_KEY_LEASE_INTERVAL"},
{SPINEL_PROP_SRP_CLIENT_HOST_INFO, "SRP_CLIENT_HOST_INFO"},
{SPINEL_PROP_SRP_CLIENT_HOST_NAME, "SRP_CLIENT_HOST_NAME"},
{SPINEL_PROP_SRP_CLIENT_HOST_ADDRESSES, "SRP_CLIENT_HOST_ADDRESSES"},
{SPINEL_PROP_SRP_CLIENT_SERVICES, "SRP_CLIENT_SERVICES"},
{SPINEL_PROP_SRP_CLIENT_HOST_SERVICES_REMOVE, "SRP_CLIENT_HOST_SERVICES_REMOVE"},
{SPINEL_PROP_SRP_CLIENT_HOST_SERVICES_CLEAR, "SRP_CLIENT_HOST_SERVICES_CLEAR"},
{SPINEL_PROP_SRP_CLIENT_EVENT, "SRP_CLIENT_EVENT"},
{SPINEL_PROP_SRP_CLIENT_SERVICE_KEY_ENABLED, "SRP_CLIENT_SERVICE_KEY_ENABLED"},
{SPINEL_PROP_SERVER_ALLOW_LOCAL_DATA_CHANGE, "SERVER_ALLOW_LOCAL_DATA_CHANGE"},
{SPINEL_PROP_SERVER_SERVICES, "SERVER_SERVICES"},
{SPINEL_PROP_SERVER_LEADER_SERVICES, "SERVER_LEADER_SERVICES"},
{SPINEL_PROP_RCP_API_VERSION, "RCP_API_VERSION"},
{SPINEL_PROP_UART_BITRATE, "UART_BITRATE"},
{SPINEL_PROP_UART_XON_XOFF, "UART_XON_XOFF"},
{SPINEL_PROP_15_4_PIB_PHY_CHANNELS_SUPPORTED, "15_4_PIB_PHY_CHANNELS_SUPPORTED"},
{SPINEL_PROP_15_4_PIB_MAC_PROMISCUOUS_MODE, "15_4_PIB_MAC_PROMISCUOUS_MODE"},
{SPINEL_PROP_15_4_PIB_MAC_SECURITY_ENABLED, "15_4_PIB_MAC_SECURITY_ENABLED"},
{SPINEL_PROP_CNTR_RESET, "CNTR_RESET"},
{SPINEL_PROP_CNTR_TX_PKT_TOTAL, "CNTR_TX_PKT_TOTAL"},
{SPINEL_PROP_CNTR_TX_PKT_ACK_REQ, "CNTR_TX_PKT_ACK_REQ"},
{SPINEL_PROP_CNTR_TX_PKT_ACKED, "CNTR_TX_PKT_ACKED"},
{SPINEL_PROP_CNTR_TX_PKT_NO_ACK_REQ, "CNTR_TX_PKT_NO_ACK_REQ"},
{SPINEL_PROP_CNTR_TX_PKT_DATA, "CNTR_TX_PKT_DATA"},
{SPINEL_PROP_CNTR_TX_PKT_DATA_POLL, "CNTR_TX_PKT_DATA_POLL"},
{SPINEL_PROP_CNTR_TX_PKT_BEACON, "CNTR_TX_PKT_BEACON"},
{SPINEL_PROP_CNTR_TX_PKT_BEACON_REQ, "CNTR_TX_PKT_BEACON_REQ"},
{SPINEL_PROP_CNTR_TX_PKT_OTHER, "CNTR_TX_PKT_OTHER"},
{SPINEL_PROP_CNTR_TX_PKT_RETRY, "CNTR_TX_PKT_RETRY"},
{SPINEL_PROP_CNTR_TX_ERR_CCA, "CNTR_TX_ERR_CCA"},
{SPINEL_PROP_CNTR_TX_PKT_UNICAST, "CNTR_TX_PKT_UNICAST"},
{SPINEL_PROP_CNTR_TX_PKT_BROADCAST, "CNTR_TX_PKT_BROADCAST"},
{SPINEL_PROP_CNTR_TX_ERR_ABORT, "CNTR_TX_ERR_ABORT"},
{SPINEL_PROP_CNTR_RX_PKT_TOTAL, "CNTR_RX_PKT_TOTAL"},
{SPINEL_PROP_CNTR_RX_PKT_DATA, "CNTR_RX_PKT_DATA"},
{SPINEL_PROP_CNTR_RX_PKT_DATA_POLL, "CNTR_RX_PKT_DATA_POLL"},
{SPINEL_PROP_CNTR_RX_PKT_BEACON, "CNTR_RX_PKT_BEACON"},
{SPINEL_PROP_CNTR_RX_PKT_BEACON_REQ, "CNTR_RX_PKT_BEACON_REQ"},
{SPINEL_PROP_CNTR_RX_PKT_OTHER, "CNTR_RX_PKT_OTHER"},
{SPINEL_PROP_CNTR_RX_PKT_FILT_WL, "CNTR_RX_PKT_FILT_WL"},
{SPINEL_PROP_CNTR_RX_PKT_FILT_DA, "CNTR_RX_PKT_FILT_DA"},
{SPINEL_PROP_CNTR_RX_ERR_EMPTY, "CNTR_RX_ERR_EMPTY"},
{SPINEL_PROP_CNTR_RX_ERR_UKWN_NBR, "CNTR_RX_ERR_UKWN_NBR"},
{SPINEL_PROP_CNTR_RX_ERR_NVLD_SADDR, "CNTR_RX_ERR_NVLD_SADDR"},
{SPINEL_PROP_CNTR_RX_ERR_SECURITY, "CNTR_RX_ERR_SECURITY"},
{SPINEL_PROP_CNTR_RX_ERR_BAD_FCS, "CNTR_RX_ERR_BAD_FCS"},
{SPINEL_PROP_CNTR_RX_ERR_OTHER, "CNTR_RX_ERR_OTHER"},
{SPINEL_PROP_CNTR_RX_PKT_DUP, "CNTR_RX_PKT_DUP"},
{SPINEL_PROP_CNTR_RX_PKT_UNICAST, "CNTR_RX_PKT_UNICAST"},
{SPINEL_PROP_CNTR_RX_PKT_BROADCAST, "CNTR_RX_PKT_BROADCAST"},
{SPINEL_PROP_CNTR_TX_IP_SEC_TOTAL, "CNTR_TX_IP_SEC_TOTAL"},
{SPINEL_PROP_CNTR_TX_IP_INSEC_TOTAL, "CNTR_TX_IP_INSEC_TOTAL"},
{SPINEL_PROP_CNTR_TX_IP_DROPPED, "CNTR_TX_IP_DROPPED"},
{SPINEL_PROP_CNTR_RX_IP_SEC_TOTAL, "CNTR_RX_IP_SEC_TOTAL"},
{SPINEL_PROP_CNTR_RX_IP_INSEC_TOTAL, "CNTR_RX_IP_INSEC_TOTAL"},
{SPINEL_PROP_CNTR_RX_IP_DROPPED, "CNTR_RX_IP_DROPPED"},
{SPINEL_PROP_CNTR_TX_SPINEL_TOTAL, "CNTR_TX_SPINEL_TOTAL"},
{SPINEL_PROP_CNTR_RX_SPINEL_TOTAL, "CNTR_RX_SPINEL_TOTAL"},
{SPINEL_PROP_CNTR_RX_SPINEL_ERR, "CNTR_RX_SPINEL_ERR"},
{SPINEL_PROP_CNTR_RX_SPINEL_OUT_OF_ORDER_TID, "CNTR_RX_SPINEL_OUT_OF_ORDER_TID"},
{SPINEL_PROP_CNTR_IP_TX_SUCCESS, "CNTR_IP_TX_SUCCESS"},
{SPINEL_PROP_CNTR_IP_RX_SUCCESS, "CNTR_IP_RX_SUCCESS"},
{SPINEL_PROP_CNTR_IP_TX_FAILURE, "CNTR_IP_TX_FAILURE"},
{SPINEL_PROP_CNTR_IP_RX_FAILURE, "CNTR_IP_RX_FAILURE"},
{SPINEL_PROP_MSG_BUFFER_COUNTERS, "MSG_BUFFER_COUNTERS"},
{SPINEL_PROP_CNTR_ALL_MAC_COUNTERS, "CNTR_ALL_MAC_COUNTERS"},
{SPINEL_PROP_CNTR_MLE_COUNTERS, "CNTR_MLE_COUNTERS"},
{SPINEL_PROP_CNTR_ALL_IP_COUNTERS, "CNTR_ALL_IP_COUNTERS"},
{SPINEL_PROP_CNTR_MAC_RETRY_HISTOGRAM, "CNTR_MAC_RETRY_HISTOGRAM"},
{SPINEL_PROP_NEST_STREAM_MFG, "NEST_STREAM_MFG"},
{SPINEL_PROP_NEST_LEGACY_ULA_PREFIX, "NEST_LEGACY_ULA_PREFIX"},
{SPINEL_PROP_NEST_LEGACY_LAST_NODE_JOINED, "NEST_LEGACY_LAST_NODE_JOINED"},
{SPINEL_PROP_DEBUG_TEST_ASSERT, "DEBUG_TEST_ASSERT"},
{SPINEL_PROP_DEBUG_NCP_LOG_LEVEL, "DEBUG_NCP_LOG_LEVEL"},
{SPINEL_PROP_DEBUG_TEST_WATCHDOG, "DEBUG_TEST_WATCHDOG"},
{SPINEL_PROP_RCP_MAC_FRAME_COUNTER, "RCP_MAC_FRAME_COUNTER"},
{SPINEL_PROP_RCP_MAC_KEY, "RCP_MAC_KEY"},
{SPINEL_PROP_DEBUG_LOG_TIMESTAMP_BASE, "DEBUG_LOG_TIMESTAMP_BASE"},
{SPINEL_PROP_DEBUG_TREL_TEST_MODE_ENABLE, "DEBUG_TREL_TEST_MODE_ENABLE"},
{0},
};
return spinel_to_cstr(spinel_prop_cstr, prop_key);
}
#define SPINEL_NET_CSTR(VALUE) __SPINEL_CSTR(SPINEL_, VALUE)
const char *spinel_net_role_to_cstr(uint8_t net_role)
{
static const struct spinel_cstr spinel_net_cstr[] = {
SPINEL_NET_CSTR(NET_ROLE_DETACHED),
SPINEL_NET_CSTR(NET_ROLE_CHILD),
SPINEL_NET_CSTR(NET_ROLE_ROUTER),
SPINEL_NET_CSTR(NET_ROLE_LEADER),
{SPINEL_NET_ROLE_DETACHED, "NET_ROLE_DETACHED"},
{SPINEL_NET_ROLE_CHILD, "NET_ROLE_CHILD"},
{SPINEL_NET_ROLE_ROUTER, "NET_ROLE_ROUTER"},
{SPINEL_NET_ROLE_LEADER, "NET_ROLE_LEADER"},
{0},
};
return spinel_to_cstr(spinel_net_cstr, net_role);
}
#define SPINEL_MCU_CSTR(VALUE) __SPINEL_CSTR(SPINEL_, VALUE)
const char *spinel_mcu_power_state_to_cstr(uint8_t mcu_power_state)
{
static const struct spinel_cstr spinel_mcu_power_state_cstr[] = {
SPINEL_MCU_CSTR(MCU_POWER_STATE_ON),
SPINEL_MCU_CSTR(MCU_POWER_STATE_LOW_POWER),
SPINEL_MCU_CSTR(MCU_POWER_STATE_OFF),
{SPINEL_MCU_POWER_STATE_ON, "MCU_POWER_STATE_ON"},
{SPINEL_MCU_POWER_STATE_LOW_POWER, "MCU_POWER_STATE_LOW_POWER"},
{SPINEL_MCU_POWER_STATE_OFF, "MCU_POWER_STATE_OFF"},
{0},
};
return spinel_to_cstr(spinel_mcu_power_state_cstr, mcu_power_state);
}
#define SPINEL_STATUS_CSTR(VALUE) __SPINEL_CSTR(SPINEL_STATUS_, VALUE)
const char *spinel_status_to_cstr(spinel_status_t status)
{
static const struct spinel_cstr spinel_status_cstr[] = {
SPINEL_STATUS_CSTR(OK),
SPINEL_STATUS_CSTR(FAILURE),
SPINEL_STATUS_CSTR(UNIMPLEMENTED),
SPINEL_STATUS_CSTR(INVALID_ARGUMENT),
SPINEL_STATUS_CSTR(INVALID_STATE),
SPINEL_STATUS_CSTR(INVALID_COMMAND),
SPINEL_STATUS_CSTR(INVALID_INTERFACE),
SPINEL_STATUS_CSTR(INTERNAL_ERROR),
SPINEL_STATUS_CSTR(SECURITY_ERROR),
SPINEL_STATUS_CSTR(PARSE_ERROR),
SPINEL_STATUS_CSTR(IN_PROGRESS),
SPINEL_STATUS_CSTR(NOMEM),
SPINEL_STATUS_CSTR(BUSY),
SPINEL_STATUS_CSTR(PROP_NOT_FOUND),
SPINEL_STATUS_CSTR(DROPPED),
SPINEL_STATUS_CSTR(EMPTY),
SPINEL_STATUS_CSTR(CMD_TOO_BIG),
SPINEL_STATUS_CSTR(NO_ACK),
SPINEL_STATUS_CSTR(CCA_FAILURE),
SPINEL_STATUS_CSTR(ALREADY),
SPINEL_STATUS_CSTR(ITEM_NOT_FOUND),
SPINEL_STATUS_CSTR(INVALID_COMMAND_FOR_PROP),
SPINEL_STATUS_CSTR(RESPONSE_TIMEOUT),
SPINEL_STATUS_CSTR(JOIN_FAILURE),
SPINEL_STATUS_CSTR(JOIN_SECURITY),
SPINEL_STATUS_CSTR(JOIN_NO_PEERS),
SPINEL_STATUS_CSTR(JOIN_INCOMPATIBLE),
SPINEL_STATUS_CSTR(JOIN_RSP_TIMEOUT),
SPINEL_STATUS_CSTR(JOIN_SUCCESS),
SPINEL_STATUS_CSTR(RESET_POWER_ON),
SPINEL_STATUS_CSTR(RESET_EXTERNAL),
SPINEL_STATUS_CSTR(RESET_SOFTWARE),
SPINEL_STATUS_CSTR(RESET_FAULT),
SPINEL_STATUS_CSTR(RESET_CRASH),
SPINEL_STATUS_CSTR(RESET_ASSERT),
SPINEL_STATUS_CSTR(RESET_OTHER),
SPINEL_STATUS_CSTR(RESET_UNKNOWN),
SPINEL_STATUS_CSTR(RESET_WATCHDOG),
{SPINEL_STATUS_OK, "OK"},
{SPINEL_STATUS_FAILURE, "FAILURE"},
{SPINEL_STATUS_UNIMPLEMENTED, "UNIMPLEMENTED"},
{SPINEL_STATUS_INVALID_ARGUMENT, "INVALID_ARGUMENT"},
{SPINEL_STATUS_INVALID_STATE, "INVALID_STATE"},
{SPINEL_STATUS_INVALID_COMMAND, "INVALID_COMMAND"},
{SPINEL_STATUS_INVALID_INTERFACE, "INVALID_INTERFACE"},
{SPINEL_STATUS_INTERNAL_ERROR, "INTERNAL_ERROR"},
{SPINEL_STATUS_SECURITY_ERROR, "SECURITY_ERROR"},
{SPINEL_STATUS_PARSE_ERROR, "PARSE_ERROR"},
{SPINEL_STATUS_IN_PROGRESS, "IN_PROGRESS"},
{SPINEL_STATUS_NOMEM, "NOMEM"},
{SPINEL_STATUS_BUSY, "BUSY"},
{SPINEL_STATUS_PROP_NOT_FOUND, "PROP_NOT_FOUND"},
{SPINEL_STATUS_DROPPED, "DROPPED"},
{SPINEL_STATUS_EMPTY, "EMPTY"},
{SPINEL_STATUS_CMD_TOO_BIG, "CMD_TOO_BIG"},
{SPINEL_STATUS_NO_ACK, "NO_ACK"},
{SPINEL_STATUS_CCA_FAILURE, "CCA_FAILURE"},
{SPINEL_STATUS_ALREADY, "ALREADY"},
{SPINEL_STATUS_ITEM_NOT_FOUND, "ITEM_NOT_FOUND"},
{SPINEL_STATUS_INVALID_COMMAND_FOR_PROP, "INVALID_COMMAND_FOR_PROP"},
{SPINEL_STATUS_RESPONSE_TIMEOUT, "RESPONSE_TIMEOUT"},
{SPINEL_STATUS_JOIN_FAILURE, "JOIN_FAILURE"},
{SPINEL_STATUS_JOIN_SECURITY, "JOIN_SECURITY"},
{SPINEL_STATUS_JOIN_NO_PEERS, "JOIN_NO_PEERS"},
{SPINEL_STATUS_JOIN_INCOMPATIBLE, "JOIN_INCOMPATIBLE"},
{SPINEL_STATUS_JOIN_RSP_TIMEOUT, "JOIN_RSP_TIMEOUT"},
{SPINEL_STATUS_JOIN_SUCCESS, "JOIN_SUCCESS"},
{SPINEL_STATUS_RESET_POWER_ON, "RESET_POWER_ON"},
{SPINEL_STATUS_RESET_EXTERNAL, "RESET_EXTERNAL"},
{SPINEL_STATUS_RESET_SOFTWARE, "RESET_SOFTWARE"},
{SPINEL_STATUS_RESET_FAULT, "RESET_FAULT"},
{SPINEL_STATUS_RESET_CRASH, "RESET_CRASH"},
{SPINEL_STATUS_RESET_ASSERT, "RESET_ASSERT"},
{SPINEL_STATUS_RESET_OTHER, "RESET_OTHER"},
{SPINEL_STATUS_RESET_UNKNOWN, "RESET_UNKNOWN"},
{SPINEL_STATUS_RESET_WATCHDOG, "RESET_WATCHDOG"},
{0},
};
return spinel_to_cstr(spinel_status_cstr, status);
}
#define SPINEL_CAP_CSTR(VALUE) __SPINEL_CSTR(SPINEL_CAP_, VALUE)
const char *spinel_capability_to_cstr(spinel_capability_t capability)
{
static const struct spinel_cstr spinel_cap_cstr[] = {
SPINEL_CAP_CSTR(LOCK),
SPINEL_CAP_CSTR(NET_SAVE),
SPINEL_CAP_CSTR(HBO),
SPINEL_CAP_CSTR(POWER_SAVE),
SPINEL_CAP_CSTR(COUNTERS),
SPINEL_CAP_CSTR(JAM_DETECT),
SPINEL_CAP_CSTR(PEEK_POKE),
SPINEL_CAP_CSTR(WRITABLE_RAW_STREAM),
SPINEL_CAP_CSTR(GPIO),
SPINEL_CAP_CSTR(TRNG),
SPINEL_CAP_CSTR(CMD_MULTI),
SPINEL_CAP_CSTR(UNSOL_UPDATE_FILTER),
SPINEL_CAP_CSTR(MCU_POWER_STATE),
SPINEL_CAP_CSTR(PCAP),
SPINEL_CAP_CSTR(802_15_4_2003),
SPINEL_CAP_CSTR(802_15_4_2006),
SPINEL_CAP_CSTR(802_15_4_2011),
SPINEL_CAP_CSTR(802_15_4_PIB),
SPINEL_CAP_CSTR(802_15_4_2450MHZ_OQPSK),
SPINEL_CAP_CSTR(802_15_4_915MHZ_OQPSK),
SPINEL_CAP_CSTR(802_15_4_868MHZ_OQPSK),
SPINEL_CAP_CSTR(802_15_4_915MHZ_BPSK),
SPINEL_CAP_CSTR(802_15_4_868MHZ_BPSK),
SPINEL_CAP_CSTR(802_15_4_915MHZ_ASK),
SPINEL_CAP_CSTR(802_15_4_868MHZ_ASK),
SPINEL_CAP_CSTR(CONFIG_FTD),
SPINEL_CAP_CSTR(CONFIG_MTD),
SPINEL_CAP_CSTR(CONFIG_RADIO),
SPINEL_CAP_CSTR(ROLE_ROUTER),
SPINEL_CAP_CSTR(ROLE_SLEEPY),
SPINEL_CAP_CSTR(NET_THREAD_1_0),
SPINEL_CAP_CSTR(NET_THREAD_1_1),
SPINEL_CAP_CSTR(NET_THREAD_1_2),
SPINEL_CAP_CSTR(RCP_API_VERSION),
SPINEL_CAP_CSTR(MAC_ALLOWLIST),
SPINEL_CAP_CSTR(MAC_RAW),
SPINEL_CAP_CSTR(OOB_STEERING_DATA),
SPINEL_CAP_CSTR(CHANNEL_MONITOR),
SPINEL_CAP_CSTR(CHANNEL_MANAGER),
SPINEL_CAP_CSTR(OPENTHREAD_LOG_METADATA),
SPINEL_CAP_CSTR(TIME_SYNC),
SPINEL_CAP_CSTR(CHILD_SUPERVISION),
SPINEL_CAP_CSTR(POSIX),
SPINEL_CAP_CSTR(SLAAC),
SPINEL_CAP_CSTR(RADIO_COEX),
SPINEL_CAP_CSTR(MAC_RETRY_HISTOGRAM),
SPINEL_CAP_CSTR(MULTI_RADIO),
SPINEL_CAP_CSTR(SRP_CLIENT),
SPINEL_CAP_CSTR(DUA),
SPINEL_CAP_CSTR(REFERENCE_DEVICE),
SPINEL_CAP_CSTR(ERROR_RATE_TRACKING),
SPINEL_CAP_CSTR(THREAD_COMMISSIONER),
SPINEL_CAP_CSTR(THREAD_TMF_PROXY),
SPINEL_CAP_CSTR(THREAD_UDP_FORWARD),
SPINEL_CAP_CSTR(THREAD_JOINER),
SPINEL_CAP_CSTR(THREAD_BORDER_ROUTER),
SPINEL_CAP_CSTR(THREAD_SERVICE),
SPINEL_CAP_CSTR(THREAD_CSL_RECEIVER),
SPINEL_CAP_CSTR(THREAD_BACKBONE_ROUTER),
SPINEL_CAP_CSTR(NEST_LEGACY_INTERFACE),
SPINEL_CAP_CSTR(NEST_LEGACY_NET_WAKE),
SPINEL_CAP_CSTR(NEST_TRANSMIT_HOOK),
{SPINEL_CAP_LOCK, "LOCK"},
{SPINEL_CAP_NET_SAVE, "NET_SAVE"},
{SPINEL_CAP_HBO, "HBO"},
{SPINEL_CAP_POWER_SAVE, "POWER_SAVE"},
{SPINEL_CAP_COUNTERS, "COUNTERS"},
{SPINEL_CAP_JAM_DETECT, "JAM_DETECT"},
{SPINEL_CAP_PEEK_POKE, "PEEK_POKE"},
{SPINEL_CAP_WRITABLE_RAW_STREAM, "WRITABLE_RAW_STREAM"},
{SPINEL_CAP_GPIO, "GPIO"},
{SPINEL_CAP_TRNG, "TRNG"},
{SPINEL_CAP_CMD_MULTI, "CMD_MULTI"},
{SPINEL_CAP_UNSOL_UPDATE_FILTER, "UNSOL_UPDATE_FILTER"},
{SPINEL_CAP_MCU_POWER_STATE, "MCU_POWER_STATE"},
{SPINEL_CAP_PCAP, "PCAP"},
{SPINEL_CAP_802_15_4_2003, "802_15_4_2003"},
{SPINEL_CAP_802_15_4_2006, "802_15_4_2006"},
{SPINEL_CAP_802_15_4_2011, "802_15_4_2011"},
{SPINEL_CAP_802_15_4_PIB, "802_15_4_PIB"},
{SPINEL_CAP_802_15_4_2450MHZ_OQPSK, "802_15_4_2450MHZ_OQPSK"},
{SPINEL_CAP_802_15_4_915MHZ_OQPSK, "802_15_4_915MHZ_OQPSK"},
{SPINEL_CAP_802_15_4_868MHZ_OQPSK, "802_15_4_868MHZ_OQPSK"},
{SPINEL_CAP_802_15_4_915MHZ_BPSK, "802_15_4_915MHZ_BPSK"},
{SPINEL_CAP_802_15_4_868MHZ_BPSK, "802_15_4_868MHZ_BPSK"},
{SPINEL_CAP_802_15_4_915MHZ_ASK, "802_15_4_915MHZ_ASK"},
{SPINEL_CAP_802_15_4_868MHZ_ASK, "802_15_4_868MHZ_ASK"},
{SPINEL_CAP_CONFIG_FTD, "CONFIG_FTD"},
{SPINEL_CAP_CONFIG_MTD, "CONFIG_MTD"},
{SPINEL_CAP_CONFIG_RADIO, "CONFIG_RADIO"},
{SPINEL_CAP_ROLE_ROUTER, "ROLE_ROUTER"},
{SPINEL_CAP_ROLE_SLEEPY, "ROLE_SLEEPY"},
{SPINEL_CAP_NET_THREAD_1_0, "NET_THREAD_1_0"},
{SPINEL_CAP_NET_THREAD_1_1, "NET_THREAD_1_1"},
{SPINEL_CAP_NET_THREAD_1_2, "NET_THREAD_1_2"},
{SPINEL_CAP_RCP_API_VERSION, "RCP_API_VERSION"},
{SPINEL_CAP_MAC_ALLOWLIST, "MAC_ALLOWLIST"},
{SPINEL_CAP_MAC_RAW, "MAC_RAW"},
{SPINEL_CAP_OOB_STEERING_DATA, "OOB_STEERING_DATA"},
{SPINEL_CAP_CHANNEL_MONITOR, "CHANNEL_MONITOR"},
{SPINEL_CAP_CHANNEL_MANAGER, "CHANNEL_MANAGER"},
{SPINEL_CAP_OPENTHREAD_LOG_METADATA, "OPENTHREAD_LOG_METADATA"},
{SPINEL_CAP_TIME_SYNC, "TIME_SYNC"},
{SPINEL_CAP_CHILD_SUPERVISION, "CHILD_SUPERVISION"},
{SPINEL_CAP_POSIX, "POSIX"},
{SPINEL_CAP_SLAAC, "SLAAC"},
{SPINEL_CAP_RADIO_COEX, "RADIO_COEX"},
{SPINEL_CAP_MAC_RETRY_HISTOGRAM, "MAC_RETRY_HISTOGRAM"},
{SPINEL_CAP_MULTI_RADIO, "MULTI_RADIO"},
{SPINEL_CAP_SRP_CLIENT, "SRP_CLIENT"},
{SPINEL_CAP_DUA, "DUA"},
{SPINEL_CAP_REFERENCE_DEVICE, "REFERENCE_DEVICE"},
{SPINEL_CAP_ERROR_RATE_TRACKING, "ERROR_RATE_TRACKING"},
{SPINEL_CAP_THREAD_COMMISSIONER, "THREAD_COMMISSIONER"},
{SPINEL_CAP_THREAD_TMF_PROXY, "THREAD_TMF_PROXY"},
{SPINEL_CAP_THREAD_UDP_FORWARD, "THREAD_UDP_FORWARD"},
{SPINEL_CAP_THREAD_JOINER, "THREAD_JOINER"},
{SPINEL_CAP_THREAD_BORDER_ROUTER, "THREAD_BORDER_ROUTER"},
{SPINEL_CAP_THREAD_SERVICE, "THREAD_SERVICE"},
{SPINEL_CAP_THREAD_CSL_RECEIVER, "THREAD_CSL_RECEIVER"},
{SPINEL_CAP_THREAD_BACKBONE_ROUTER, "THREAD_BACKBONE_ROUTER"},
{SPINEL_CAP_NEST_LEGACY_INTERFACE, "NEST_LEGACY_INTERFACE"},
{SPINEL_CAP_NEST_LEGACY_NET_WAKE, "NEST_LEGACY_NET_WAKE"},
{SPINEL_CAP_NEST_TRANSMIT_HOOK, "NEST_TRANSMIT_HOOK"},
{0},
};