diff --git a/src/ncp/ncp_base_dispatcher.cpp b/src/ncp/ncp_base_dispatcher.cpp index 89124a0e8..9b9599c84 100644 --- a/src/ncp/ncp_base_dispatcher.cpp +++ b/src/ncp/ncp_base_dispatcher.cpp @@ -42,308 +42,288 @@ constexpr bool NcpBase::AreHandlerEntriesSorted(const HandlerEntry *aHandlerEntr : ((aHandlerEntries[aSize - 1].mKey > aHandlerEntries[aSize - 2].mKey) && AreHandlerEntriesSorted(aHandlerEntries, aSize - 1)); } + +#define OT_NCP_CONST constexpr +#else +#define OT_NCP_CONST const #endif NcpBase::PropertyHandler NcpBase::FindGetPropertyHandler(spinel_prop_key_t aKey) { -#if __cplusplus >= 201103L - constexpr -#else - const -#endif - static HandlerEntry sHandlerEntries[] = - { {SPINEL_PROP_LAST_STATUS, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_PROTOCOL_VERSION, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NCP_VERSION, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_INTERFACE_TYPE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_VENDOR_ID, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CAPS, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_INTERFACE_COUNT, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_POWER_STATE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_HWADDR, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_LOCK, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_HOST_POWER_STATE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MCU_POWER_STATE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_PHY_ENABLED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_PHY_CHAN, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_PHY_CHAN_SUPPORTED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_PHY_FREQ, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_PHY_CCA_THRESHOLD, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_PHY_TX_POWER, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_PHY_RSSI, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_PHY_RX_SENSITIVITY, &NcpBase::HandlePropertyGet}, +#define OT_NCP_GET_HANDLER_ENTRY(aPropertyName) {aPropertyName, &NcpBase::HandlePropertyGet} + + OT_NCP_CONST static HandlerEntry sHandlerEntries[] = { + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_LAST_STATUS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_PROTOCOL_VERSION), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NCP_VERSION), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_INTERFACE_TYPE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_VENDOR_ID), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CAPS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_INTERFACE_COUNT), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_POWER_STATE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_HWADDR), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_LOCK), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_HOST_POWER_STATE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MCU_POWER_STATE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_PHY_ENABLED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_PHY_CHAN), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_PHY_CHAN_SUPPORTED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_PHY_FREQ), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_PHY_CCA_THRESHOLD), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_PHY_TX_POWER), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_PHY_RSSI), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_PHY_RX_SENSITIVITY), #if OPENTHREAD_MTD || OPENTHREAD_FTD - {SPINEL_PROP_PHY_PCAP_ENABLED, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_PHY_PCAP_ENABLED), #endif - {SPINEL_PROP_PHY_CHAN_PREFERRED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_SCAN_STATE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_SCAN_MASK, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_SCAN_PERIOD, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_15_4_LADDR, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_15_4_SADDR, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_15_4_PANID, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_RAW_STREAM_ENABLED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_PROMISCUOUS_MODE, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_PHY_CHAN_PREFERRED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_SCAN_STATE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_SCAN_MASK), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_SCAN_PERIOD), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_15_4_LADDR), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_15_4_SADDR), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_15_4_PANID), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_RAW_STREAM_ENABLED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_PROMISCUOUS_MODE), #if OPENTHREAD_MTD || OPENTHREAD_FTD - {SPINEL_PROP_MAC_DATA_POLL_PERIOD, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NET_SAVED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NET_IF_UP, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NET_STACK_UP, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NET_ROLE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NET_NETWORK_NAME, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NET_XPANID, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NET_MASTER_KEY, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NET_KEY_SEQUENCE_COUNTER, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NET_PARTITION_ID, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NET_KEY_SWITCH_GUARDTIME, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_DATA_POLL_PERIOD), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_SAVED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_IF_UP), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_STACK_UP), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_ROLE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_NETWORK_NAME), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_XPANID), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_MASTER_KEY), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_KEY_SEQUENCE_COUNTER), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_PARTITION_ID), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_KEY_SWITCH_GUARDTIME), #if OPENTHREAD_FTD - {SPINEL_PROP_NET_PSKC, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NET_PSKC), #endif - {SPINEL_PROP_THREAD_LEADER_ADDR, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_PARENT, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_LEADER_ADDR), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_PARENT), #if OPENTHREAD_FTD - {SPINEL_PROP_THREAD_CHILD_TABLE, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_CHILD_TABLE), #endif - {SPINEL_PROP_THREAD_LEADER_RID, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_LEADER_RID), #if OPENTHREAD_FTD - {SPINEL_PROP_THREAD_LEADER_WEIGHT, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_LOCAL_LEADER_WEIGHT, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_LEADER_WEIGHT), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_LOCAL_LEADER_WEIGHT), #endif #if OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE - {SPINEL_PROP_THREAD_NETWORK_DATA, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_NETWORK_DATA), #endif - {SPINEL_PROP_THREAD_NETWORK_DATA_VERSION, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_NETWORK_DATA_VERSION), #if OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE - {SPINEL_PROP_THREAD_STABLE_NETWORK_DATA, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_STABLE_NETWORK_DATA), #endif - {SPINEL_PROP_THREAD_STABLE_NETWORK_DATA_VERSION, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_ON_MESH_NETS, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_OFF_MESH_ROUTES, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_ASSISTING_PORTS, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_ALLOW_LOCAL_NET_DATA_CHANGE, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_MODE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_IPV6_LL_ADDR, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_IPV6_ML_ADDR, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_IPV6_ML_PREFIX, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_IPV6_ADDRESS_TABLE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_IPV6_ROUTE_TABLE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_IPV6_MULTICAST_ADDRESS_TABLE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD_MODE, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_STABLE_NETWORK_DATA_VERSION), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ON_MESH_NETS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_OFF_MESH_ROUTES), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ASSISTING_PORTS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ALLOW_LOCAL_NET_DATA_CHANGE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_MODE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_IPV6_LL_ADDR), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_IPV6_ML_ADDR), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_IPV6_ML_PREFIX), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_IPV6_ADDRESS_TABLE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_IPV6_ROUTE_TABLE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_IPV6_MULTICAST_ADDRESS_TABLE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD_MODE), #if OPENTHREAD_FTD #if OPENTHREAD_CONFIG_JOINER_ENABLE - {SPINEL_PROP_MESHCOP_JOINER_STATE, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_JOINER_STATE), #endif #if OPENTHREAD_CONFIG_COMMISSIONER_ENABLE - {SPINEL_PROP_MESHCOP_COMMISSIONER_STATE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MESHCOP_COMMISSIONER_PROVISIONING_URL, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MESHCOP_COMMISSIONER_SESSION_ID, - &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_STATE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_PROVISIONING_URL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_SESSION_ID), #endif #endif // OPENTHREAD_FTD #if OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE - {SPINEL_PROP_SERVER_ALLOW_LOCAL_DATA_CHANGE, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_SERVER_SERVICES, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_SERVER_ALLOW_LOCAL_DATA_CHANGE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_SERVER_SERVICES), #endif - {SPINEL_PROP_SERVER_LEADER_SERVICES, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_TOTAL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_ACK_REQ, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_ACKED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_NO_ACK_REQ, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_DATA, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_DATA_POLL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_BEACON, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_BEACON_REQ, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_OTHER, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_RETRY, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_ERR_CCA, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_UNICAST, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_PKT_BROADCAST, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_ERR_ABORT, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_PKT_TOTAL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_PKT_DATA, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_PKT_DATA_POLL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_PKT_BEACON, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_PKT_BEACON_REQ, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_PKT_OTHER, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_PKT_FILT_WL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_PKT_FILT_DA, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_ERR_EMPTY, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_ERR_UKWN_NBR, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_ERR_NVLD_SADDR, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_ERR_SECURITY, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_ERR_BAD_FCS, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_ERR_OTHER, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_PKT_DUP, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_PKT_UNICAST, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_PKT_BROADCAST, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_IP_SEC_TOTAL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_IP_INSEC_TOTAL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_IP_DROPPED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_IP_SEC_TOTAL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_IP_INSEC_TOTAL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_IP_DROPPED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_TX_SPINEL_TOTAL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_SPINEL_TOTAL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_RX_SPINEL_ERR, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_IP_TX_SUCCESS, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_IP_RX_SUCCESS, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_IP_TX_FAILURE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_IP_RX_FAILURE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MSG_BUFFER_COUNTERS, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_ALL_MAC_COUNTERS, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_MLE_COUNTERS, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CNTR_ALL_IP_COUNTERS, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_SERVER_LEADER_SERVICES), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_TOTAL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_ACK_REQ), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_ACKED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_NO_ACK_REQ), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_DATA), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_DATA_POLL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_BEACON), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_BEACON_REQ), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_OTHER), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_RETRY), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_ERR_CCA), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_UNICAST), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_PKT_BROADCAST), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_ERR_ABORT), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_PKT_TOTAL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_PKT_DATA), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_PKT_DATA_POLL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_PKT_BEACON), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_PKT_BEACON_REQ), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_PKT_OTHER), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_PKT_FILT_WL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_PKT_FILT_DA), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_ERR_EMPTY), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_ERR_UKWN_NBR), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_ERR_NVLD_SADDR), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_ERR_SECURITY), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_ERR_BAD_FCS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_ERR_OTHER), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_PKT_DUP), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_PKT_UNICAST), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_PKT_BROADCAST), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_IP_SEC_TOTAL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_IP_INSEC_TOTAL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_IP_DROPPED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_IP_SEC_TOTAL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_IP_INSEC_TOTAL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_IP_DROPPED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_TX_SPINEL_TOTAL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_SPINEL_TOTAL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RX_SPINEL_ERR), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_IP_TX_SUCCESS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_IP_RX_SUCCESS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_IP_TX_FAILURE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_IP_RX_FAILURE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MSG_BUFFER_COUNTERS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_ALL_MAC_COUNTERS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_MLE_COUNTERS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_ALL_IP_COUNTERS), #if OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_ENABLE - {SPINEL_PROP_CNTR_MAC_RETRY_HISTOGRAM, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CNTR_MAC_RETRY_HISTOGRAM), #endif - {SPINEL_PROP_UNSOL_UPDATE_FILTER, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_UNSOL_UPDATE_LIST, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_UNSOL_UPDATE_FILTER), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_UNSOL_UPDATE_LIST), #if OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE - {SPINEL_PROP_JAM_DETECT_ENABLE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_JAM_DETECTED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_JAM_DETECT_RSSI_THRESHOLD, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_JAM_DETECT_WINDOW, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_JAM_DETECT_BUSY, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_JAM_DETECT_HISTORY_BITMAP, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_JAM_DETECT_ENABLE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_JAM_DETECTED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_JAM_DETECT_RSSI_THRESHOLD), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_JAM_DETECT_WINDOW), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_JAM_DETECT_BUSY), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_JAM_DETECT_HISTORY_BITMAP), #endif #if OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE - {SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_INTERVAL, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CHANNEL_MONITOR_RSSI_THRESHOLD, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_WINDOW, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_COUNT, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CHANNEL_MONITOR_CHANNEL_OCCUPANCY, - &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_INTERVAL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MONITOR_RSSI_THRESHOLD), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_WINDOW), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MONITOR_SAMPLE_COUNT), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MONITOR_CHANNEL_OCCUPANCY), #endif #endif // OPENTHREAD_MTD || OPENTHREAD_FTD #if OPENTHREAD_RADIO || OPENTHREAD_CONFIG_LINK_RAW_ENABLE - {SPINEL_PROP_RADIO_CAPS, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_RADIO_CAPS), #endif #if OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE - {SPINEL_PROP_RADIO_COEX_METRICS, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_RADIO_COEX_ENABLE, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_RADIO_COEX_METRICS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_RADIO_COEX_ENABLE), #endif #if OPENTHREAD_MTD || OPENTHREAD_FTD #if OPENTHREAD_CONFIG_MAC_FILTER_ENABLE - {SPINEL_PROP_MAC_WHITELIST, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_WHITELIST_ENABLED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_EXTENDED_ADDR, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_WHITELIST), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_WHITELIST_ENABLED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_EXTENDED_ADDR), #endif #endif // OPENTHREAD_MTD || OPENTHREAD_FTD #if OPENTHREAD_RADIO || OPENTHREAD_CONFIG_LINK_RAW_ENABLE - {SPINEL_PROP_MAC_SRC_MATCH_ENABLED, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_SRC_MATCH_ENABLED), #endif #if OPENTHREAD_MTD || OPENTHREAD_FTD #if OPENTHREAD_CONFIG_MAC_FILTER_ENABLE - {SPINEL_PROP_MAC_BLACKLIST, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_BLACKLIST_ENABLED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_FIXED_RSS, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_BLACKLIST), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_BLACKLIST_ENABLED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_FIXED_RSS), #endif - {SPINEL_PROP_MAC_CCA_FAILURE_RATE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_MAC_MAX_RETRY_NUMBER_DIRECT, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_CCA_FAILURE_RATE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_MAX_RETRY_NUMBER_DIRECT), #if OPENTHREAD_FTD - {SPINEL_PROP_MAC_MAX_RETRY_NUMBER_INDIRECT, - &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_MAC_MAX_RETRY_NUMBER_INDIRECT), #endif - {SPINEL_PROP_THREAD_CHILD_TIMEOUT, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_RLOC16, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_CHILD_TIMEOUT), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_RLOC16), #if OPENTHREAD_FTD - {SPINEL_PROP_THREAD_ROUTER_UPGRADE_THRESHOLD, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ROUTER_UPGRADE_THRESHOLD), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT), #endif - {SPINEL_PROP_THREAD_RLOC16_DEBUG_PASSTHRU, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_RLOC16_DEBUG_PASSTHRU), #if OPENTHREAD_FTD - {SPINEL_PROP_THREAD_ROUTER_ROLE_ENABLED, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_PREFERRED_ROUTER_ID, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ROUTER_ROLE_ENABLED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_PREFERRED_ROUTER_ID), #endif - {SPINEL_PROP_THREAD_NEIGHBOR_TABLE, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_NEIGHBOR_TABLE), #if OPENTHREAD_FTD - {SPINEL_PROP_THREAD_CHILD_COUNT_MAX, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_CHILD_COUNT_MAX), #endif - {SPINEL_PROP_THREAD_LEADER_NETWORK_DATA, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_STABLE_LEADER_NETWORK_DATA, - &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_LEADER_NETWORK_DATA), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_STABLE_LEADER_NETWORK_DATA), #if OPENTHREAD_FTD #if OPENTHREAD_CONFIG_COMMISSIONER_ENABLE - {SPINEL_PROP_THREAD_COMMISSIONER_ENABLED, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_COMMISSIONER_ENABLED), #endif #endif - {SPINEL_PROP_THREAD_DISCOVERY_SCAN_JOINER_FLAG, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_DISCOVERY_SCAN_ENABLE_FILTERING, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_DISCOVERY_SCAN_PANID, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_DISCOVERY_SCAN_JOINER_FLAG), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_DISCOVERY_SCAN_ENABLE_FILTERING), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_DISCOVERY_SCAN_PANID), #if OPENTHREAD_FTD #if OPENTHREAD_CONFIG_MLE_STEERING_DATA_SET_OOB_ENABLE - {SPINEL_PROP_THREAD_STEERING_DATA, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_STEERING_DATA), #endif - {SPINEL_PROP_THREAD_ROUTER_TABLE, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ROUTER_TABLE), #endif // OPENTHREAD_FTD - {SPINEL_PROP_THREAD_ACTIVE_DATASET, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_PENDING_DATASET, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ACTIVE_DATASET), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_PENDING_DATASET), #if OPENTHREAD_FTD - {SPINEL_PROP_THREAD_CHILD_TABLE_ADDRESSES, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_CHILD_TABLE_ADDRESSES), #endif - {SPINEL_PROP_THREAD_NEIGHBOR_TABLE_ERROR_RATES, - &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_NEIGHBOR_TABLE_ERROR_RATES), #if OPENTHREAD_FTD - {SPINEL_PROP_THREAD_ADDRESS_CACHE_TABLE, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_THREAD_NEW_DATASET, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ADDRESS_CACHE_TABLE), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_NEW_DATASET), #if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE - {SPINEL_PROP_CHANNEL_MANAGER_NEW_CHANNEL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CHANNEL_MANAGER_DELAY, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CHANNEL_MANAGER_SUPPORTED_CHANNELS, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CHANNEL_MANAGER_FAVORED_CHANNELS, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CHANNEL_MANAGER_CHANNEL_SELECT, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_ENABLED, - &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_INTERVAL, - &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_NEW_CHANNEL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_DELAY), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_SUPPORTED_CHANNELS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_FAVORED_CHANNELS), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_CHANNEL_SELECT), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_ENABLED), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_INTERVAL), #endif #if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE - {SPINEL_PROP_THREAD_NETWORK_TIME, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_TIME_SYNC_PERIOD, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_TIME_SYNC_XTAL_THRESHOLD, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_THREAD_NETWORK_TIME), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_TIME_SYNC_PERIOD), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_TIME_SYNC_XTAL_THRESHOLD), #endif #if OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE - {SPINEL_PROP_CHILD_SUPERVISION_INTERVAL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_CHILD_SUPERVISION_CHECK_TIMEOUT, - &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHILD_SUPERVISION_INTERVAL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_CHILD_SUPERVISION_CHECK_TIMEOUT), #endif #endif // OPENTHREAD_FTD #if OPENTHREAD_PLATFORM_POSIX_APP - {SPINEL_PROP_RCP_VERSION, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_RCP_VERSION), #endif #if OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE - {SPINEL_PROP_SLAAC_ENABLED, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_SLAAC_ENABLED), #endif #if OPENTHREAD_CONFIG_LEGACY_ENABLE - {SPINEL_PROP_NEST_LEGACY_ULA_PREFIX, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_NEST_LEGACY_LAST_NODE_JOINED, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NEST_LEGACY_ULA_PREFIX), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_NEST_LEGACY_LAST_NODE_JOINED), #endif #endif // OPENTHREAD_MTD || OPENTHREAD_FTD - {SPINEL_PROP_DEBUG_TEST_ASSERT, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_DEBUG_NCP_LOG_LEVEL, &NcpBase::HandlePropertyGet}, - {SPINEL_PROP_DEBUG_TEST_WATCHDOG, &NcpBase::HandlePropertyGet}, + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_DEBUG_TEST_ASSERT), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_DEBUG_NCP_LOG_LEVEL), + OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_DEBUG_TEST_WATCHDOG), }; +#undef OT_NCP_GET_HANDLER_ENTRY + #if __cplusplus >= 201103L static_assert(AreHandlerEntriesSorted(sHandlerEntries, OT_ARRAY_LENGTH(sHandlerEntries)), "NCP property getter entries not sorted!"); @@ -354,218 +334,191 @@ NcpBase::PropertyHandler NcpBase::FindGetPropertyHandler(spinel_prop_key_t aKey) NcpBase::PropertyHandler NcpBase::FindSetPropertyHandler(spinel_prop_key_t aKey) { -#if __cplusplus >= 201103L - constexpr -#else - const -#endif - static HandlerEntry sHandlerEntries[] = - { {SPINEL_PROP_POWER_STATE, &NcpBase::HandlePropertySet}, +#define OT_NCP_SET_HANDLER_ENTRY(aPropertyName) {aPropertyName, &NcpBase::HandlePropertySet} + + OT_NCP_CONST static HandlerEntry sHandlerEntries[] = { + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_POWER_STATE), #if OPENTHREAD_CONFIG_NCP_ENABLE_MCU_POWER_STATE_CONTROL - {SPINEL_PROP_MCU_POWER_STATE, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MCU_POWER_STATE), #endif #if OPENTHREAD_RADIO || OPENTHREAD_CONFIG_LINK_RAW_ENABLE - {SPINEL_PROP_PHY_ENABLED, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_PHY_ENABLED), #endif - {SPINEL_PROP_PHY_CHAN, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_PHY_CHAN), #if OPENTHREAD_MTD || OPENTHREAD_FTD - {SPINEL_PROP_PHY_CHAN_SUPPORTED, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_PHY_CHAN_SUPPORTED), #endif - {SPINEL_PROP_PHY_CCA_THRESHOLD, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_PHY_TX_POWER, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_PHY_CCA_THRESHOLD), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_PHY_TX_POWER), #if OPENTHREAD_MTD || OPENTHREAD_FTD - {SPINEL_PROP_PHY_PCAP_ENABLED, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_PHY_PCAP_ENABLED), #endif - {SPINEL_PROP_MAC_SCAN_STATE, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MAC_SCAN_MASK, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MAC_SCAN_PERIOD, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MAC_15_4_LADDR, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_SCAN_STATE), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_SCAN_MASK), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_SCAN_PERIOD), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_15_4_LADDR), #if OPENTHREAD_RADIO || OPENTHREAD_CONFIG_LINK_RAW_ENABLE - {SPINEL_PROP_MAC_15_4_SADDR, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_15_4_SADDR), #endif - {SPINEL_PROP_MAC_15_4_PANID, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MAC_RAW_STREAM_ENABLED, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MAC_PROMISCUOUS_MODE, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_15_4_PANID), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_RAW_STREAM_ENABLED), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_PROMISCUOUS_MODE), #if OPENTHREAD_MTD || OPENTHREAD_FTD - {SPINEL_PROP_MAC_DATA_POLL_PERIOD, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_NET_IF_UP, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_NET_STACK_UP, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_NET_ROLE, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_NET_NETWORK_NAME, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_NET_XPANID, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_NET_MASTER_KEY, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_NET_KEY_SEQUENCE_COUNTER, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_DATA_POLL_PERIOD), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NET_IF_UP), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NET_STACK_UP), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NET_ROLE), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NET_NETWORK_NAME), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NET_XPANID), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NET_MASTER_KEY), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NET_KEY_SEQUENCE_COUNTER), #if OPENTHREAD_FTD - {SPINEL_PROP_NET_PARTITION_ID, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NET_PARTITION_ID), #endif - {SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_NET_KEY_SWITCH_GUARDTIME, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NET_KEY_SWITCH_GUARDTIME), #if OPENTHREAD_FTD - {SPINEL_PROP_NET_PSKC, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_LOCAL_LEADER_WEIGHT, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NET_PSKC), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_LOCAL_LEADER_WEIGHT), #endif - {SPINEL_PROP_THREAD_ASSISTING_PORTS, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ASSISTING_PORTS), #if OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE - {SPINEL_PROP_THREAD_ALLOW_LOCAL_NET_DATA_CHANGE, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ALLOW_LOCAL_NET_DATA_CHANGE), #endif - {SPINEL_PROP_THREAD_MODE, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_IPV6_ML_PREFIX, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD_MODE, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_STREAM_NET, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_STREAM_NET_INSECURE, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_MODE), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_IPV6_ML_PREFIX), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_IPV6_ICMP_PING_OFFLOAD_MODE), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_STREAM_NET), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_STREAM_NET_INSECURE), #if OPENTHREAD_CONFIG_JOINER_ENABLE - {SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_JOINER_COMMISSIONING), #endif #if OPENTHREAD_FTD #if OPENTHREAD_CONFIG_COMMISSIONER_ENABLE - {SPINEL_PROP_MESHCOP_COMMISSIONER_STATE, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MESHCOP_COMMISSIONER_PROVISIONING_URL, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_STATE), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_PROVISIONING_URL), #endif #endif // OPENTHREAD_FTD #if OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE - {SPINEL_PROP_SERVER_ALLOW_LOCAL_DATA_CHANGE, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_SERVER_ALLOW_LOCAL_DATA_CHANGE), #endif - {SPINEL_PROP_CNTR_RESET, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_CNTR_ALL_MAC_COUNTERS, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_CNTR_MLE_COUNTERS, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_CNTR_ALL_IP_COUNTERS, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RESET), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CNTR_ALL_MAC_COUNTERS), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CNTR_MLE_COUNTERS), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CNTR_ALL_IP_COUNTERS), #if OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_ENABLE - {SPINEL_PROP_CNTR_MAC_RETRY_HISTOGRAM, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CNTR_MAC_RETRY_HISTOGRAM), #endif - {SPINEL_PROP_UNSOL_UPDATE_FILTER, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_UNSOL_UPDATE_FILTER), #if OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE - {SPINEL_PROP_JAM_DETECT_ENABLE, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_JAM_DETECT_RSSI_THRESHOLD, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_JAM_DETECT_WINDOW, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_JAM_DETECT_BUSY, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_JAM_DETECT_ENABLE), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_JAM_DETECT_RSSI_THRESHOLD), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_JAM_DETECT_WINDOW), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_JAM_DETECT_BUSY), #endif #endif // OPENTHREAD_MTD || OPENTHREAD_FTD #if OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE - {SPINEL_PROP_RADIO_COEX_ENABLE, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_RADIO_COEX_ENABLE), #endif #if OPENTHREAD_MTD || OPENTHREAD_FTD #if OPENTHREAD_CONFIG_MAC_FILTER_ENABLE - {SPINEL_PROP_MAC_WHITELIST, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MAC_WHITELIST_ENABLED, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_WHITELIST), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_WHITELIST_ENABLED), #endif #endif // OPENTHREAD_MTD || OPENTHREAD_FTD #if OPENTHREAD_RADIO || OPENTHREAD_CONFIG_LINK_RAW_ENABLE - {SPINEL_PROP_MAC_SRC_MATCH_ENABLED, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MAC_SRC_MATCH_SHORT_ADDRESSES, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MAC_SRC_MATCH_EXTENDED_ADDRESSES, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_SRC_MATCH_ENABLED), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_SRC_MATCH_SHORT_ADDRESSES), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_SRC_MATCH_EXTENDED_ADDRESSES), #endif #if OPENTHREAD_MTD || OPENTHREAD_FTD #if OPENTHREAD_CONFIG_MAC_FILTER_ENABLE - {SPINEL_PROP_MAC_BLACKLIST, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MAC_BLACKLIST_ENABLED, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MAC_FIXED_RSS, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_BLACKLIST), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_BLACKLIST_ENABLED), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_FIXED_RSS), #endif - {SPINEL_PROP_MAC_MAX_RETRY_NUMBER_DIRECT, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_MAX_RETRY_NUMBER_DIRECT), #if OPENTHREAD_FTD - {SPINEL_PROP_MAC_MAX_RETRY_NUMBER_INDIRECT, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MAC_MAX_RETRY_NUMBER_INDIRECT), #endif - {SPINEL_PROP_THREAD_CHILD_TIMEOUT, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_CHILD_TIMEOUT), #if OPENTHREAD_FTD - {SPINEL_PROP_THREAD_ROUTER_UPGRADE_THRESHOLD, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ROUTER_UPGRADE_THRESHOLD), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT), #endif - {SPINEL_PROP_THREAD_RLOC16_DEBUG_PASSTHRU, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_RLOC16_DEBUG_PASSTHRU), #if OPENTHREAD_FTD - {SPINEL_PROP_THREAD_ROUTER_ROLE_ENABLED, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_PREFERRED_ROUTER_ID, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_CHILD_COUNT_MAX, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ROUTER_ROLE_ENABLED), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_PREFERRED_ROUTER_ID), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_CHILD_COUNT_MAX), #endif - {SPINEL_PROP_THREAD_DISCOVERY_SCAN_JOINER_FLAG, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_DISCOVERY_SCAN_ENABLE_FILTERING, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_DISCOVERY_SCAN_PANID, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_DISCOVERY_SCAN_JOINER_FLAG), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_DISCOVERY_SCAN_ENABLE_FILTERING), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_DISCOVERY_SCAN_PANID), #if OPENTHREAD_FTD #if OPENTHREAD_CONFIG_MLE_STEERING_DATA_SET_OOB_ENABLE - {SPINEL_PROP_THREAD_STEERING_DATA, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_STEERING_DATA), #endif #endif - {SPINEL_PROP_THREAD_ACTIVE_DATASET, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_PENDING_DATASET, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_ACTIVE_DATASET), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_PENDING_DATASET), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_MGMT_SET_ACTIVE_DATASET), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_MGMT_SET_PENDING_DATASET), #if OPENTHREAD_CONFIG_UDP_FORWARD_ENABLE - {SPINEL_PROP_THREAD_UDP_FORWARD_STREAM, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_UDP_FORWARD_STREAM), #endif - {SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_MGMT_GET_ACTIVE_DATASET), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_THREAD_MGMT_GET_PENDING_DATASET), #if OPENTHREAD_FTD #if OPENTHREAD_CONFIG_COMMISSIONER_ENABLE - {SPINEL_PROP_MESHCOP_COMMISSIONER_ANNOUNCE_BEGIN, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_QUERY, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MESHCOP_COMMISSIONER_MGMT_GET, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_MESHCOP_COMMISSIONER_MGMT_SET, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_ANNOUNCE_BEGIN), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_ENERGY_SCAN), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_PAN_ID_QUERY), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_MGMT_GET), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_MGMT_SET), #endif #if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE - {SPINEL_PROP_CHANNEL_MANAGER_NEW_CHANNEL, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_CHANNEL_MANAGER_DELAY, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_CHANNEL_MANAGER_SUPPORTED_CHANNELS, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_CHANNEL_MANAGER_FAVORED_CHANNELS, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_NEW_CHANNEL), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_DELAY), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_SUPPORTED_CHANNELS), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_FAVORED_CHANNELS), #if OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE - {SPINEL_PROP_CHANNEL_MANAGER_CHANNEL_SELECT, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_CHANNEL_SELECT), #endif - {SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_ENABLED, - &NcpBase::HandlePropertySet}, - {SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_INTERVAL, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_ENABLED), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CHANNEL_MANAGER_AUTO_SELECT_INTERVAL), #endif // OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE #if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE - {SPINEL_PROP_TIME_SYNC_PERIOD, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_TIME_SYNC_XTAL_THRESHOLD, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_TIME_SYNC_PERIOD), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_TIME_SYNC_XTAL_THRESHOLD), #endif #if OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE - {SPINEL_PROP_CHILD_SUPERVISION_INTERVAL, &NcpBase::HandlePropertySet}, - {SPINEL_PROP_CHILD_SUPERVISION_CHECK_TIMEOUT, - &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CHILD_SUPERVISION_INTERVAL), + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CHILD_SUPERVISION_CHECK_TIMEOUT), #endif #endif // OPENTHREAD_FTD #if OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE - {SPINEL_PROP_SLAAC_ENABLED, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_SLAAC_ENABLED), #endif #if OPENTHREAD_CONFIG_LEGACY_ENABLE - {SPINEL_PROP_NEST_LEGACY_ULA_PREFIX, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_NEST_LEGACY_ULA_PREFIX), #endif #endif // OPENTHREAD_MTD || OPENTHREAD_FTD #if OPENTHREAD_CONFIG_LOG_LEVEL_DYNAMIC_ENABLE - {SPINEL_PROP_DEBUG_NCP_LOG_LEVEL, &NcpBase::HandlePropertySet}, + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_DEBUG_NCP_LOG_LEVEL), #endif }; +#undef OT_NCP_SET_HANDLER_ENTRY + #if __cplusplus >= 201103L static_assert(AreHandlerEntriesSorted(sHandlerEntries, OT_ARRAY_LENGTH(sHandlerEntries)), "NCP property setter entries not sorted!"); @@ -576,47 +529,42 @@ NcpBase::PropertyHandler NcpBase::FindSetPropertyHandler(spinel_prop_key_t aKey) NcpBase::PropertyHandler NcpBase::FindInsertPropertyHandler(spinel_prop_key_t aKey) { -#if __cplusplus >= 201103L - constexpr -#else - const -#endif - static HandlerEntry sHandlerEntries[] = { +#define OT_NCP_INSERT_HANDLER_ENTRY(aPropertyName) {aPropertyName, &NcpBase::HandlePropertyInsert} + + OT_NCP_CONST static HandlerEntry sHandlerEntries[] = { #if OPENTHREAD_MTD || OPENTHREAD_FTD #if OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE - {SPINEL_PROP_THREAD_ON_MESH_NETS, &NcpBase::HandlePropertyInsert}, - {SPINEL_PROP_THREAD_OFF_MESH_ROUTES, &NcpBase::HandlePropertyInsert}, + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_THREAD_ON_MESH_NETS), + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_THREAD_OFF_MESH_ROUTES), #endif - {SPINEL_PROP_THREAD_ASSISTING_PORTS, &NcpBase::HandlePropertyInsert}, - {SPINEL_PROP_IPV6_ADDRESS_TABLE, &NcpBase::HandlePropertyInsert}, - {SPINEL_PROP_IPV6_MULTICAST_ADDRESS_TABLE, - &NcpBase::HandlePropertyInsert}, + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_THREAD_ASSISTING_PORTS), + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_IPV6_ADDRESS_TABLE), + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_IPV6_MULTICAST_ADDRESS_TABLE), #if OPENTHREAD_FTD && OPENTHREAD_CONFIG_COMMISSIONER_ENABLE - {SPINEL_PROP_MESHCOP_COMMISSIONER_JOINERS, - &NcpBase::HandlePropertyInsert}, + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_JOINERS), #endif #if OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE - {SPINEL_PROP_SERVER_SERVICES, &NcpBase::HandlePropertyInsert}, + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_SERVER_SERVICES), #endif #endif // #if OPENTHREAD_MTD || OPENTHREAD_FTD - {SPINEL_PROP_UNSOL_UPDATE_FILTER, &NcpBase::HandlePropertyInsert}, + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_UNSOL_UPDATE_FILTER), #if (OPENTHREAD_MTD || OPENTHREAD_FTD) && OPENTHREAD_CONFIG_MAC_FILTER_ENABLE - {SPINEL_PROP_MAC_WHITELIST, &NcpBase::HandlePropertyInsert}, + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_MAC_WHITELIST), #endif #if OPENTHREAD_RADIO || OPENTHREAD_CONFIG_LINK_RAW_ENABLE - {SPINEL_PROP_MAC_SRC_MATCH_SHORT_ADDRESSES, - &NcpBase::HandlePropertyInsert}, - {SPINEL_PROP_MAC_SRC_MATCH_EXTENDED_ADDRESSES, - &NcpBase::HandlePropertyInsert}, + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_MAC_SRC_MATCH_SHORT_ADDRESSES), + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_MAC_SRC_MATCH_EXTENDED_ADDRESSES), #endif #if (OPENTHREAD_MTD || OPENTHREAD_FTD) && OPENTHREAD_CONFIG_MAC_FILTER_ENABLE - {SPINEL_PROP_MAC_BLACKLIST, &NcpBase::HandlePropertyInsert}, - {SPINEL_PROP_MAC_FIXED_RSS, &NcpBase::HandlePropertyInsert}, + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_MAC_BLACKLIST), + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_MAC_FIXED_RSS), #endif #if OPENTHREAD_FTD && OPENTHREAD_CONFIG_COMMISSIONER_ENABLE - {SPINEL_PROP_THREAD_JOINERS, &NcpBase::HandlePropertyInsert}, + OT_NCP_INSERT_HANDLER_ENTRY(SPINEL_PROP_THREAD_JOINERS), #endif - }; + }; + +#undef OT_NCP_INSERT_HANDLER_ENTRY #if __cplusplus >= 201103L static_assert(AreHandlerEntriesSorted(sHandlerEntries, OT_ARRAY_LENGTH(sHandlerEntries)), @@ -628,48 +576,42 @@ NcpBase::PropertyHandler NcpBase::FindInsertPropertyHandler(spinel_prop_key_t aK NcpBase::PropertyHandler NcpBase::FindRemovePropertyHandler(spinel_prop_key_t aKey) { -#if __cplusplus >= 201103L - constexpr -#else - const -#endif - static HandlerEntry sHandlerEntries[] = { +#define OT_NCP_REMOVE_HANDLER_ENTRY(aPropertyName) {aPropertyName, &NcpBase::HandlePropertyRemove} + + OT_NCP_CONST static HandlerEntry sHandlerEntries[] = { #if OPENTHREAD_MTD || OPENTHREAD_FTD #if OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE - {SPINEL_PROP_THREAD_ON_MESH_NETS, &NcpBase::HandlePropertyRemove}, - {SPINEL_PROP_THREAD_OFF_MESH_ROUTES, &NcpBase::HandlePropertyRemove}, + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_THREAD_ON_MESH_NETS), + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_THREAD_OFF_MESH_ROUTES), #endif - {SPINEL_PROP_THREAD_ASSISTING_PORTS, &NcpBase::HandlePropertyRemove}, - {SPINEL_PROP_IPV6_ADDRESS_TABLE, &NcpBase::HandlePropertyRemove}, - {SPINEL_PROP_IPV6_MULTICAST_ADDRESS_TABLE, - &NcpBase::HandlePropertyRemove}, + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_THREAD_ASSISTING_PORTS), + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_IPV6_ADDRESS_TABLE), + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_IPV6_MULTICAST_ADDRESS_TABLE), #if OPENTHREAD_FTD && OPENTHREAD_CONFIG_COMMISSIONER_ENABLE - {SPINEL_PROP_MESHCOP_COMMISSIONER_JOINERS, - &NcpBase::HandlePropertyRemove}, + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_MESHCOP_COMMISSIONER_JOINERS), #endif #if OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE - {SPINEL_PROP_SERVER_SERVICES, &NcpBase::HandlePropertyRemove}, + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_SERVER_SERVICES), #endif #endif // #if OPENTHREAD_MTD || OPENTHREAD_FTD - {SPINEL_PROP_UNSOL_UPDATE_FILTER, &NcpBase::HandlePropertyRemove}, + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_UNSOL_UPDATE_FILTER), #if (OPENTHREAD_MTD || OPENTHREAD_FTD) && OPENTHREAD_CONFIG_MAC_FILTER_ENABLE - {SPINEL_PROP_MAC_WHITELIST, &NcpBase::HandlePropertyRemove}, + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_MAC_WHITELIST), #endif #if OPENTHREAD_RADIO || OPENTHREAD_CONFIG_LINK_RAW_ENABLE - {SPINEL_PROP_MAC_SRC_MATCH_SHORT_ADDRESSES, - &NcpBase::HandlePropertyRemove}, - {SPINEL_PROP_MAC_SRC_MATCH_EXTENDED_ADDRESSES, - &NcpBase::HandlePropertyRemove}, + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_MAC_SRC_MATCH_SHORT_ADDRESSES), + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_MAC_SRC_MATCH_EXTENDED_ADDRESSES), #endif #if (OPENTHREAD_MTD || OPENTHREAD_FTD) && OPENTHREAD_CONFIG_MAC_FILTER_ENABLE - {SPINEL_PROP_MAC_BLACKLIST, &NcpBase::HandlePropertyRemove}, - {SPINEL_PROP_MAC_FIXED_RSS, &NcpBase::HandlePropertyRemove}, + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_MAC_BLACKLIST), + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_MAC_FIXED_RSS), #endif #if OPENTHREAD_FTD - {SPINEL_PROP_THREAD_ACTIVE_ROUTER_IDS, - &NcpBase::HandlePropertyRemove}, + OT_NCP_REMOVE_HANDLER_ENTRY(SPINEL_PROP_THREAD_ACTIVE_ROUTER_IDS), #endif - }; + }; + +#undef OT_NCP_REMOVE_HANDLER_ENTRY #if __cplusplus >= 201103L static_assert(AreHandlerEntriesSorted(sHandlerEntries, OT_ARRAY_LENGTH(sHandlerEntries)),