diff --git a/src/core/api/border_router_api.cpp b/src/core/api/border_router_api.cpp index 69fd09701..7900dadde 100644 --- a/src/core/api/border_router_api.cpp +++ b/src/core/api/border_router_api.cpp @@ -38,8 +38,8 @@ #include #include "border_router/routing_manager.hpp" -#include "common/as_core_type.hpp" #include "common/debug.hpp" +#include "common/instance.hpp" using namespace ot; diff --git a/src/core/api/dns_api.cpp b/src/core/api/dns_api.cpp index 436eb05df..ed3bfcf55 100644 --- a/src/core/api/dns_api.cpp +++ b/src/core/api/dns_api.cpp @@ -35,7 +35,8 @@ #include -#include "common/as_core_type.hpp" +#include "common/instance.hpp" +#include "net/dns_types.hpp" using namespace ot; diff --git a/src/core/api/dns_server_api.cpp b/src/core/api/dns_server_api.cpp index ccd233a12..b9e020cf6 100644 --- a/src/core/api/dns_server_api.cpp +++ b/src/core/api/dns_server_api.cpp @@ -33,7 +33,7 @@ #include "openthread-core-config.h" -#include "common/as_core_type.hpp" +#include "common/instance.hpp" #include "net/dns_types.hpp" #include "net/dnssd_server.hpp" diff --git a/src/core/api/link_metrics_api.cpp b/src/core/api/link_metrics_api.cpp index bc4668a21..b14a915a0 100644 --- a/src/core/api/link_metrics_api.cpp +++ b/src/core/api/link_metrics_api.cpp @@ -38,6 +38,7 @@ #include #include "common/as_core_type.hpp" +#include "common/locator_getters.hpp" using namespace ot; diff --git a/src/core/coap/coap.hpp b/src/core/coap/coap.hpp index 8ab2e3c87..3bbce4c04 100644 --- a/src/core/coap/coap.hpp +++ b/src/core/coap/coap.hpp @@ -34,6 +34,7 @@ #include #include "coap/coap_message.hpp" +#include "common/as_core_type.hpp" #include "common/debug.hpp" #include "common/linked_list.hpp" #include "common/locator.hpp" @@ -834,6 +835,13 @@ private: }; } // namespace Coap + +DefineCoreType(otCoapTxParameters, Coap::TxParameters); +DefineCoreType(otCoapResource, Coap::Resource); +#if OPENTHREAD_CONFIG_COAP_BLOCKWISE_TRANSFER_ENABLE +DefineCoreType(otCoapBlockwiseResource, Coap::ResourceBlockWise); +#endif + } // namespace ot #endif // COAP_HPP_ diff --git a/src/core/coap/coap_message.hpp b/src/core/coap/coap_message.hpp index db7e1bd84..6e9487efa 100644 --- a/src/core/coap/coap_message.hpp +++ b/src/core/coap/coap_message.hpp @@ -38,6 +38,7 @@ #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/code_utils.hpp" #include "common/const_cast.hpp" @@ -1218,6 +1219,64 @@ public: */ } // namespace Coap + +DefineCoreType(otCoapOption, Coap::Option); +DefineCoreType(otCoapOptionIterator, Coap::Option::Iterator); +DefineMapEnum(otCoapType, Coap::Type); +DefineMapEnum(otCoapCode, Coap::Code); + +/** + * This method casts an `otMessage` pointer to a `Coap::Message` reference. + * + * @param[in] aMessage A pointer to an `otMessage`. + * + * @returns A reference to `Coap::Message` matching @p aMessage. + * + */ +inline Coap::Message &AsCoapMessage(otMessage *aMessage) +{ + return *static_cast(aMessage); +} + +/** + * This method casts an `otMessage` pointer to a `Coap::Message` reference. + * + * @param[in] aMessage A pointer to an `otMessage`. + * + * @returns A reference to `Coap::Message` matching @p aMessage. + * + */ +inline Coap::Message *AsCoapMessagePtr(otMessage *aMessage) +{ + return static_cast(aMessage); +} + +/** + * This method casts an `otMessage` pointer to a `Coap::Message` pointer. + * + * @param[in] aMessage A pointer to an `otMessage`. + * + * @returns A pointer to `Coap::Message` matching @p aMessage. + * + */ +inline const Coap::Message &AsCoapMessage(const otMessage *aMessage) +{ + return *static_cast(aMessage); +} + +/** + * This method casts an `otMessage` pointer to a `Coap::Message` reference. + * + * @param[in] aMessage A pointer to an `otMessage`. + * + * @returns A pointer to `Coap::Message` matching @p aMessage. + * + */ +inline const Coap::Message *AsCoapMessagePtr(const otMessage *aMessage) +{ + return static_cast(aMessage); +} + } // namespace ot #endif // COAP_HEADER_HPP_ diff --git a/src/core/common/as_core_type.hpp b/src/core/common/as_core_type.hpp index 002089427..e5ad9bc8e 100644 --- a/src/core/common/as_core_type.hpp +++ b/src/core/common/as_core_type.hpp @@ -36,11 +36,6 @@ #include "openthread-core-config.h" -#include "common/instance.hpp" -#include "crypto/sha256.hpp" -#include "mac/mac_filter.hpp" -#include "net/dns_types.hpp" - namespace ot { /** @@ -116,62 +111,6 @@ template const typename CoreType::Type *AsCoreTypePtr(cons return static_cast::Type *>(aObject); } -#if OPENTHREAD_FTD || OPENTHREAD_MTD - -/** - * This method casts an `otMessage` pointer to a `Coap::Message` reference. - * - * @param[in] aMessage A pointer to an `otMessage`. - * - * @returns A reference to `Coap::Message` matching @p aMessage. - * - */ -inline Coap::Message &AsCoapMessage(otMessage *aMessage) -{ - return *static_cast(aMessage); -} - -/** - * This method casts an `otMessage` pointer to a `Coap::Message` reference. - * - * @param[in] aMessage A pointer to an `otMessage`. - * - * @returns A reference to `Coap::Message` matching @p aMessage. - * - */ -inline Coap::Message *AsCoapMessagePtr(otMessage *aMessage) -{ - return static_cast(aMessage); -} - -/** - * This method casts an `otMessage` pointer to a `Coap::Message` pointer. - * - * @param[in] aMessage A pointer to an `otMessage`. - * - * @returns A pointer to `Coap::Message` matching @p aMessage. - * - */ -inline const Coap::Message &AsCoapMessage(const otMessage *aMessage) -{ - return *static_cast(aMessage); -} - -/** - * This method casts an `otMessage` pointer to a `Coap::Message` reference. - * - * @param[in] aMessage A pointer to an `otMessage`. - * - * @returns A pointer to `Coap::Message` matching @p aMessage. - * - */ -inline const Coap::Message *AsCoapMessagePtr(const otMessage *aMessage) -{ - return static_cast(aMessage); -} - -#endif // #if OPENTHREAD_FTD || OPENTHREAD_MTD - /** * This structure maps two enumeration types. * @@ -198,9 +137,6 @@ template const typename MappedEnum::Type MapEnum(E return static_cast::Type>(aValue); } -//--------------------------------------------------------------------------------------------------------------------- -// Private macros and definitions - // Helper macro to define specialization of `CoreType` struct relating `BaseType` with `SubType`. #define DefineCoreType(BaseType, SubType) \ template <> struct CoreType \ @@ -220,149 +156,6 @@ template const typename MappedEnum::Type MapEnum(E using Type = FirstEnumType; \ } -DefineCoreType(otInstance, Instance); - -// Message -DefineCoreType(otMessage, Message); -DefineCoreType(otMessageSettings, Message::Settings); -DefineCoreType(otMessageBuffer, Buffer); -DefineCoreType(otMessageQueue, MessageQueue); - -// Mac -DefineCoreType(otRadioFrame, Mac::Frame); -DefineCoreType(otExtAddress, Mac::ExtAddress); -DefineCoreType(otMacKey, Mac::Key); -DefineCoreType(otExtendedPanId, Mac::ExtendedPanId); -DefineCoreType(otNetworkName, Mac::NetworkName); -#if OPENTHREAD_CONFIG_MAC_FILTER_ENABLE -DefineMapEnum(otMacFilterAddressMode, Mac::Filter::Mode); -#endif - -DefineCoreType(otCryptoKey, Crypto::Key); -DefineCoreType(otCryptoSha256Hash, Crypto::Sha256::Hash); - -#if OPENTHREAD_FTD || OPENTHREAD_MTD - -// Thread -DefineCoreType(otThreadLinkInfo, ThreadLinkInfo); -DefineCoreType(otSecurityPolicy, SecurityPolicy); -DefineCoreType(otNetworkKey, NetworkKey); -DefineCoreType(otPskc, Pskc); - -DefineCoreType(otNeighborInfo, Neighbor::Info); -DefineCoreType(otRouterInfo, Router::Info); -#if OPENTHREAD_FTD -DefineCoreType(otChildInfo, Child::Info); -#endif - -// Ip6 -DefineCoreType(otIp6Prefix, Ip6::Prefix); -DefineCoreType(otIp6InterfaceIdentifier, Ip6::InterfaceIdentifier); -DefineCoreType(otIp6Address, Ip6::Address); -DefineCoreType(otMessageInfo, Ip6::MessageInfo); -DefineCoreType(otSockAddr, Ip6::SockAddr); -DefineCoreType(otNetifAddress, Ip6::Netif::UnicastAddress); -DefineCoreType(otNetifMulticastAddress, Ip6::Netif::MulticastAddress); -DefineCoreType(otIcmp6Header, Ip6::Icmp::Header); -DefineCoreType(otIcmp6Handler, Ip6::Icmp::Handler); -DefineCoreType(otUdpSocket, Ip6::Udp::SocketHandle); -DefineCoreType(otUdpReceiver, Ip6::Udp::Receiver); -DefineCoreType(otTcpEndpoint, Ip6::Tcp::Endpoint); -DefineCoreType(otTcpListener, Ip6::Tcp::Listener); - -// Mle -DefineCoreType(otMeshLocalPrefix, Mle::MeshLocalPrefix); -DefineCoreType(otLeaderData, Mle::LeaderData); -DefineMapEnum(otDeviceRole, Mle::DeviceRole); - -// LinkMetrics -#if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE -DefineCoreType(otLinkMetrics, LinkMetrics::Metrics); -DefineCoreType(otLinkMetricsValues, LinkMetrics::MetricsValues); -DefineMapEnum(otLinkMetricsEnhAckFlags, LinkMetrics::EnhAckFlags); -#endif - -// NetworkData -DefineCoreType(otBorderRouterConfig, NetworkData::OnMeshPrefixConfig); -DefineCoreType(otExternalRouteConfig, NetworkData::ExternalRouteConfig); -DefineCoreType(otServiceConfig, NetworkData::ServiceConfig); -DefineCoreType(otServerConfig, NetworkData::ServiceConfig::ServerConfig); - -// MeshCoP -DefineCoreType(otOperationalDatasetComponents, MeshCoP::Dataset::Components); -DefineCoreType(otOperationalDataset, MeshCoP::Dataset::Info); -DefineCoreType(otJoinerPskd, MeshCoP::JoinerPskd); -DefineCoreType(otJoinerDiscerner, MeshCoP::JoinerDiscerner); -DefineCoreType(otSteeringData, MeshCoP::SteeringData); -#if OPENTHREAD_CONFIG_JOINER_ENABLE -DefineMapEnum(otJoinerState, MeshCoP::Joiner::State); -#endif -#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_COMMISSIONER_ENABLE -DefineMapEnum(otCommissionerState, MeshCoP::Commissioner::State); -#endif -#if OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE -DefineMapEnum(otBorderAgentState, MeshCoP::BorderAgent::State); -#endif - -// Coap -DefineCoreType(otCoapTxParameters, Coap::TxParameters); -DefineCoreType(otCoapResource, Coap::Resource); -DefineCoreType(otCoapOption, Coap::Option); -DefineCoreType(otCoapOptionIterator, Coap::Option::Iterator); -DefineMapEnum(otCoapType, Coap::Type); -DefineMapEnum(otCoapCode, Coap::Code); -#if OPENTHREAD_CONFIG_COAP_BLOCKWISE_TRANSFER_ENABLE -DefineCoreType(otCoapBlockwiseResource, Coap::ResourceBlockWise); -#endif - -// Dns -DefineCoreType(otDnsTxtEntry, Dns::TxtEntry); -DefineCoreType(otDnsTxtEntryIterator, Dns::TxtEntry::Iterator); -#if OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE -DefineCoreType(otDnsQueryConfig, Dns::Client::QueryConfig); -DefineCoreType(otDnsAddressResponse, Dns::Client::AddressResponse); -#if OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE -DefineCoreType(otDnsBrowseResponse, Dns::Client::BrowseResponse); -DefineCoreType(otDnsServiceResponse, Dns::Client::ServiceResponse); -DefineCoreType(otDnsServiceInfo, Dns::Client::ServiceInfo); -#endif -#endif -#if OPENTHREAD_CONFIG_DNSSD_SERVER_ENABLE -DefineMapEnum(otDnssdQueryType, Dns::ServiceDiscovery::Server::DnsQueryType); -#endif - -// Srp -#if OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE -DefineCoreType(otSrpClientHostInfo, Srp::Client::HostInfo); -DefineCoreType(otSrpClientService, Srp::Client::Service); -DefineMapEnum(otSrpClientItemState, Srp::Client::ItemState); -#endif -#if OPENTHREAD_CONFIG_SRP_SERVER_ENABLE -DefineCoreType(otSrpServerLeaseConfig, Srp::Server::LeaseConfig); -DefineCoreType(otSrpServerHost, Srp::Server::Host); -DefineCoreType(otSrpServerService, Srp::Server::Service); -DefineMapEnum(otSrpServerState, Srp::Server::State); -DefineMapEnum(otSrpServerAddressMode, Srp::Server::AddressMode); -#endif - -// Utils -#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE -DefineCoreType(otHistoryTrackerIterator, Utils::HistoryTracker::Iterator); -DefineCoreType(otHistoryTrackerNetworkInfo, Utils::HistoryTracker::NetworkInfo); -DefineCoreType(otHistoryTrackerMessageInfo, Utils::HistoryTracker::MessageInfo); -DefineCoreType(otHistoryTrackerNeighborInfo, Utils::HistoryTracker::NeighborInfo); -#endif -#if OPENTHREAD_CONFIG_PING_SENDER_ENABLE -DefineCoreType(otPingSenderReply, Utils::PingSender::Reply); -DefineCoreType(otPingSenderConfig, Utils::PingSender::Config); -DefineCoreType(otPingSenderStatistics, Utils::PingSender::Statistics); -#endif -#if OPENTHREAD_CONFIG_SRP_CLIENT_BUFFERS_ENABLE -DefineCoreType(otSrpClientBuffersServiceEntry, Utils::SrpClientBuffers::ServiceEntry); -#endif - -#endif // #if OPENTHREAD_FTD || OPENTHREAD_MTD - } // namespace ot #endif // AS_CORE_TYPE_HPP_ diff --git a/src/core/common/instance.hpp b/src/core/common/instance.hpp index 7436ca930..7ccaec928 100644 --- a/src/core/common/instance.hpp +++ b/src/core/common/instance.hpp @@ -45,6 +45,7 @@ #include #endif +#include "common/as_core_type.hpp" #include "common/error.hpp" #include "common/non_copyable.hpp" #include "common/random_manager.hpp" @@ -444,6 +445,8 @@ private: #endif }; +DefineCoreType(otInstance, Instance); + // Specializations of the `Get()` method. template <> inline Radio &Instance::Get(void) diff --git a/src/core/common/message.hpp b/src/core/common/message.hpp index e9e419d4d..8f20dc4eb 100644 --- a/src/core/common/message.hpp +++ b/src/core/common/message.hpp @@ -41,6 +41,7 @@ #include #include +#include "common/as_core_type.hpp" #include "common/code_utils.hpp" #include "common/const_cast.hpp" #include "common/data.hpp" @@ -1519,6 +1520,11 @@ private: * */ +DefineCoreType(otMessageBuffer, Buffer); +DefineCoreType(otMessageSettings, Message::Settings); +DefineCoreType(otMessage, Message); +DefineCoreType(otMessageQueue, MessageQueue); + } // namespace ot #endif // MESSAGE_HPP_ diff --git a/src/core/crypto/sha256.hpp b/src/core/crypto/sha256.hpp index 99027d2bb..f895c8ec6 100644 --- a/src/core/crypto/sha256.hpp +++ b/src/core/crypto/sha256.hpp @@ -41,6 +41,7 @@ #include #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/code_utils.hpp" #include "common/equatable.hpp" @@ -155,6 +156,9 @@ private: */ } // namespace Crypto + +DefineCoreType(otCryptoSha256Hash, Crypto::Sha256::Hash); + } // namespace ot #endif // SHA256_HPP_ diff --git a/src/core/crypto/storage.hpp b/src/core/crypto/storage.hpp index bb08f7897..9c6280a67 100644 --- a/src/core/crypto/storage.hpp +++ b/src/core/crypto/storage.hpp @@ -38,6 +38,7 @@ #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/code_utils.hpp" #include "common/error.hpp" @@ -330,6 +331,9 @@ private: }; } // namespace Crypto + +DefineCoreType(otCryptoKey, Crypto::Key); + } // namespace ot #endif // STORAGE_HPP_ diff --git a/src/core/mac/mac_filter.hpp b/src/core/mac/mac_filter.hpp index 7597e5f3c..30bbb4d53 100644 --- a/src/core/mac/mac_filter.hpp +++ b/src/core/mac/mac_filter.hpp @@ -40,6 +40,7 @@ #include +#include "common/as_core_type.hpp" #include "common/non_copyable.hpp" #include "mac/mac_frame.hpp" @@ -247,6 +248,9 @@ private: */ } // namespace Mac + +DefineMapEnum(otMacFilterAddressMode, Mac::Filter::Mode); + } // namespace ot #endif // OPENTHREAD_CONFIG_MAC_FILTER_ENABLE diff --git a/src/core/mac/mac_frame.hpp b/src/core/mac/mac_frame.hpp index fbe1314d0..fc466f089 100644 --- a/src/core/mac/mac_frame.hpp +++ b/src/core/mac/mac_frame.hpp @@ -39,6 +39,7 @@ #include #include +#include "common/as_core_type.hpp" #include "common/const_cast.hpp" #include "common/encoding.hpp" #include "mac/mac_types.hpp" diff --git a/src/core/mac/mac_types.hpp b/src/core/mac/mac_types.hpp index d7fd1f0d2..c28ff57d8 100644 --- a/src/core/mac/mac_types.hpp +++ b/src/core/mac/mac_types.hpp @@ -42,6 +42,7 @@ #include #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/data.hpp" #include "common/equatable.hpp" @@ -1020,6 +1021,12 @@ private: */ } // namespace Mac + +DefineCoreType(otExtAddress, Mac::ExtAddress); +DefineCoreType(otMacKey, Mac::Key); +DefineCoreType(otExtendedPanId, Mac::ExtendedPanId); +DefineCoreType(otNetworkName, Mac::NetworkName); + } // namespace ot #endif // MAC_TYPES_HPP_ diff --git a/src/core/meshcop/border_agent.hpp b/src/core/meshcop/border_agent.hpp index 157d0691e..9a69a2387 100644 --- a/src/core/meshcop/border_agent.hpp +++ b/src/core/meshcop/border_agent.hpp @@ -41,6 +41,7 @@ #include #include "coap/coap.hpp" +#include "common/as_core_type.hpp" #include "common/locator.hpp" #include "common/non_copyable.hpp" #include "common/notifier.hpp" @@ -198,6 +199,9 @@ private: }; } // namespace MeshCoP + +DefineMapEnum(otBorderAgentState, MeshCoP::BorderAgent::State); + } // namespace ot #endif // OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE diff --git a/src/core/meshcop/commissioner.hpp b/src/core/meshcop/commissioner.hpp index 01bf0a7ec..ecc599db8 100644 --- a/src/core/meshcop/commissioner.hpp +++ b/src/core/meshcop/commissioner.hpp @@ -42,6 +42,7 @@ #include "coap/coap.hpp" #include "coap/coap_secure.hpp" +#include "common/as_core_type.hpp" #include "common/locator.hpp" #include "common/non_copyable.hpp" #include "common/timer.hpp" @@ -474,6 +475,9 @@ private: }; } // namespace MeshCoP + +DefineMapEnum(otCommissionerState, MeshCoP::Commissioner::State); + } // namespace ot #endif // OPENTHREAD_FTD && OPENTHREAD_CONFIG_COMMISSIONER_ENABLE diff --git a/src/core/meshcop/dataset.hpp b/src/core/meshcop/dataset.hpp index 8b5113465..3a2abaf0d 100644 --- a/src/core/meshcop/dataset.hpp +++ b/src/core/meshcop/dataset.hpp @@ -39,6 +39,7 @@ #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/const_cast.hpp" #include "common/locator.hpp" @@ -963,6 +964,10 @@ template <> inline Error Dataset::SetTlv(Tlv::Type aType, const uint32_t &aValue } } // namespace MeshCoP + +DefineCoreType(otOperationalDatasetComponents, MeshCoP::Dataset::Components); +DefineCoreType(otOperationalDataset, MeshCoP::Dataset::Info); + } // namespace ot #endif // MESHCOP_DATASET_HPP_ diff --git a/src/core/meshcop/joiner.hpp b/src/core/meshcop/joiner.hpp index a3668a6a5..f380ae1b7 100644 --- a/src/core/meshcop/joiner.hpp +++ b/src/core/meshcop/joiner.hpp @@ -43,6 +43,7 @@ #include "coap/coap.hpp" #include "coap/coap_message.hpp" #include "coap/coap_secure.hpp" +#include "common/as_core_type.hpp" #include "common/locator.hpp" #include "common/logging.hpp" #include "common/message.hpp" @@ -241,6 +242,9 @@ private: }; } // namespace MeshCoP + +DefineMapEnum(otJoinerState, MeshCoP::Joiner::State); + } // namespace ot #endif // OPENTHREAD_CONFIG_JOINER_ENABLE diff --git a/src/core/meshcop/meshcop.hpp b/src/core/meshcop/meshcop.hpp index 41477f212..6a7a2d25a 100644 --- a/src/core/meshcop/meshcop.hpp +++ b/src/core/meshcop/meshcop.hpp @@ -44,6 +44,7 @@ #include #include "coap/coap.hpp" +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/equatable.hpp" #include "common/message.hpp" @@ -473,6 +474,10 @@ inline void LogError(const char *, Error) } // namespace MeshCoP +DefineCoreType(otJoinerPskd, MeshCoP::JoinerPskd); +DefineCoreType(otJoinerDiscerner, MeshCoP::JoinerDiscerner); +DefineCoreType(otSteeringData, MeshCoP::SteeringData); + } // namespace ot #endif // MESHCOP_HPP_ diff --git a/src/core/net/dns_client.hpp b/src/core/net/dns_client.hpp index b29b34dab..97326b6bf 100644 --- a/src/core/net/dns_client.hpp +++ b/src/core/net/dns_client.hpp @@ -35,6 +35,7 @@ #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/message.hpp" #include "common/non_copyable.hpp" @@ -746,6 +747,15 @@ private: }; } // namespace Dns + +DefineCoreType(otDnsQueryConfig, Dns::Client::QueryConfig); +DefineCoreType(otDnsAddressResponse, Dns::Client::AddressResponse); +#if OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE +DefineCoreType(otDnsBrowseResponse, Dns::Client::BrowseResponse); +DefineCoreType(otDnsServiceResponse, Dns::Client::ServiceResponse); +DefineCoreType(otDnsServiceInfo, Dns::Client::ServiceInfo); +#endif + } // namespace ot #endif // OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE diff --git a/src/core/net/dns_types.hpp b/src/core/net/dns_types.hpp index 12e922bd2..1bdf0d800 100644 --- a/src/core/net/dns_types.hpp +++ b/src/core/net/dns_types.hpp @@ -39,6 +39,7 @@ #include #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/encoding.hpp" #include "common/equatable.hpp" @@ -2585,6 +2586,10 @@ public: */ } // namespace Dns + +DefineCoreType(otDnsTxtEntry, Dns::TxtEntry); +DefineCoreType(otDnsTxtEntryIterator, Dns::TxtEntry::Iterator); + } // namespace ot #endif // DNS_HEADER_HPP_ diff --git a/src/core/net/dnssd_server.hpp b/src/core/net/dnssd_server.hpp index 527a1ca3a..5450418f6 100644 --- a/src/core/net/dnssd_server.hpp +++ b/src/core/net/dnssd_server.hpp @@ -35,6 +35,7 @@ #include +#include "common/as_core_type.hpp" #include "common/message.hpp" #include "common/non_copyable.hpp" #include "common/timer.hpp" @@ -406,6 +407,9 @@ private: } // namespace ServiceDiscovery } // namespace Dns + +DefineMapEnum(otDnssdQueryType, Dns::ServiceDiscovery::Server::DnsQueryType); + } // namespace ot #endif // OPENTHREAD_CONFIG_DNSSD_SERVER_ENABLE diff --git a/src/core/net/icmp6.hpp b/src/core/net/icmp6.hpp index c23ba49a8..82d12eeff 100644 --- a/src/core/net/icmp6.hpp +++ b/src/core/net/icmp6.hpp @@ -38,6 +38,7 @@ #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/encoding.hpp" #include "common/linked_list.hpp" @@ -345,6 +346,10 @@ private: */ } // namespace Ip6 + +DefineCoreType(otIcmp6Header, Ip6::Icmp::Header); +DefineCoreType(otIcmp6Handler, Ip6::Icmp::Handler); + } // namespace ot #endif // ICMP6_HPP_ diff --git a/src/core/net/ip6_address.hpp b/src/core/net/ip6_address.hpp index 9139af7bd..b5618f326 100644 --- a/src/core/net/ip6_address.hpp +++ b/src/core/net/ip6_address.hpp @@ -40,6 +40,7 @@ #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/encoding.hpp" #include "common/equatable.hpp" @@ -991,6 +992,11 @@ private: */ } // namespace Ip6 + +DefineCoreType(otIp6Prefix, Ip6::Prefix); +DefineCoreType(otIp6InterfaceIdentifier, Ip6::InterfaceIdentifier); +DefineCoreType(otIp6Address, Ip6::Address); + } // namespace ot #endif // IP6_ADDRESS_HPP_ diff --git a/src/core/net/netif.hpp b/src/core/net/netif.hpp index 61ff2c281..7c2a36f63 100644 --- a/src/core/net/netif.hpp +++ b/src/core/net/netif.hpp @@ -36,6 +36,7 @@ #include "openthread-core-config.h" +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/code_utils.hpp" #include "common/const_cast.hpp" @@ -665,6 +666,10 @@ private: */ } // namespace Ip6 + +DefineCoreType(otNetifAddress, Ip6::Netif::UnicastAddress); +DefineCoreType(otNetifMulticastAddress, Ip6::Netif::MulticastAddress); + } // namespace ot #endif // NET_NETIF_HPP_ diff --git a/src/core/net/socket.hpp b/src/core/net/socket.hpp index 8b1f3f347..815ddb499 100644 --- a/src/core/net/socket.hpp +++ b/src/core/net/socket.hpp @@ -380,6 +380,10 @@ private: */ } // namespace Ip6 + +DefineCoreType(otMessageInfo, Ip6::MessageInfo); +DefineCoreType(otSockAddr, Ip6::SockAddr); + } // namespace ot #endif // NET_SOCKET_HPP_ diff --git a/src/core/net/srp_client.hpp b/src/core/net/srp_client.hpp index df5271878..3e0794d73 100644 --- a/src/core/net/srp_client.hpp +++ b/src/core/net/srp_client.hpp @@ -35,6 +35,7 @@ #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/linked_list.hpp" #include "common/locator.hpp" @@ -896,6 +897,11 @@ private: }; } // namespace Srp + +DefineCoreType(otSrpClientHostInfo, Srp::Client::HostInfo); +DefineCoreType(otSrpClientService, Srp::Client::Service); +DefineMapEnum(otSrpClientItemState, Srp::Client::ItemState); + } // namespace ot #endif // OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE diff --git a/src/core/net/srp_server.hpp b/src/core/net/srp_server.hpp index f82cc423b..7864ac7fa 100644 --- a/src/core/net/srp_server.hpp +++ b/src/core/net/srp_server.hpp @@ -53,6 +53,7 @@ #include #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/heap_string.hpp" #include "common/linked_list.hpp" @@ -889,6 +890,13 @@ private: }; } // namespace Srp + +DefineCoreType(otSrpServerLeaseConfig, Srp::Server::LeaseConfig); +DefineCoreType(otSrpServerHost, Srp::Server::Host); +DefineCoreType(otSrpServerService, Srp::Server::Service); +DefineMapEnum(otSrpServerState, Srp::Server::State); +DefineMapEnum(otSrpServerAddressMode, Srp::Server::AddressMode); + } // namespace ot #endif // OPENTHREAD_CONFIG_SRP_SERVER_ENABLE diff --git a/src/core/net/tcp6.hpp b/src/core/net/tcp6.hpp index d216bd013..76761b46e 100644 --- a/src/core/net/tcp6.hpp +++ b/src/core/net/tcp6.hpp @@ -38,13 +38,13 @@ #include -#include "net/ip6_headers.hpp" -#include "net/socket.hpp" - +#include "common/as_core_type.hpp" #include "common/linked_list.hpp" #include "common/locator.hpp" #include "common/non_copyable.hpp" #include "common/timer.hpp" +#include "net/ip6_headers.hpp" +#include "net/socket.hpp" namespace ot { namespace Ip6 { @@ -564,6 +564,10 @@ private: }; } // namespace Ip6 + +DefineCoreType(otTcpEndpoint, Ip6::Tcp::Endpoint); +DefineCoreType(otTcpListener, Ip6::Tcp::Listener); + } // namespace ot #endif // TCP6_HPP_ diff --git a/src/core/net/udp6.hpp b/src/core/net/udp6.hpp index 4068567c0..146d5e745 100644 --- a/src/core/net/udp6.hpp +++ b/src/core/net/udp6.hpp @@ -39,6 +39,7 @@ #include #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/linked_list.hpp" #include "common/locator.hpp" @@ -651,6 +652,10 @@ private: */ } // namespace Ip6 + +DefineCoreType(otUdpSocket, Ip6::Udp::SocketHandle); +DefineCoreType(otUdpReceiver, Ip6::Udp::Receiver); + } // namespace ot #endif // UDP6_HPP_ diff --git a/src/core/thread/key_manager.hpp b/src/core/thread/key_manager.hpp index c1b77f553..bbc98ad63 100644 --- a/src/core/thread/key_manager.hpp +++ b/src/core/thread/key_manager.hpp @@ -39,8 +39,9 @@ #include #include - #include + +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/encoding.hpp" #include "common/equatable.hpp" @@ -636,6 +637,10 @@ private: * @} */ +DefineCoreType(otSecurityPolicy, SecurityPolicy); +DefineCoreType(otNetworkKey, NetworkKey); +DefineCoreType(otPskc, Pskc); + } // namespace ot #endif // KEY_MANAGER_HPP_ diff --git a/src/core/thread/link_metrics.hpp b/src/core/thread/link_metrics.hpp index 8bfc2b061..f1891af88 100644 --- a/src/core/thread/link_metrics.hpp +++ b/src/core/thread/link_metrics.hpp @@ -45,6 +45,7 @@ #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/locator.hpp" #include "common/message.hpp" @@ -453,6 +454,11 @@ private: */ } // namespace LinkMetrics + +DefineCoreType(otLinkMetrics, LinkMetrics::Metrics); +DefineCoreType(otLinkMetricsValues, LinkMetrics::MetricsValues); +DefineMapEnum(otLinkMetricsEnhAckFlags, LinkMetrics::EnhAckFlags); + } // namespace ot #endif // OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE diff --git a/src/core/thread/mesh_forwarder.hpp b/src/core/thread/mesh_forwarder.hpp index 2d849f7dd..5ebd50682 100644 --- a/src/core/thread/mesh_forwarder.hpp +++ b/src/core/thread/mesh_forwarder.hpp @@ -36,6 +36,7 @@ #include "openthread-core-config.h" +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/locator.hpp" #include "common/non_copyable.hpp" @@ -598,6 +599,8 @@ private: * */ +DefineCoreType(otThreadLinkInfo, ThreadLinkInfo); + } // namespace ot #endif // MESH_FORWARDER_HPP_ diff --git a/src/core/thread/mle_types.hpp b/src/core/thread/mle_types.hpp index 942c96ff8..2f8ffce11 100644 --- a/src/core/thread/mle_types.hpp +++ b/src/core/thread/mle_types.hpp @@ -42,6 +42,7 @@ #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/code_utils.hpp" #include "common/encoding.hpp" @@ -588,6 +589,11 @@ typedef Mac::Key Key; */ } // namespace Mle + +DefineCoreType(otMeshLocalPrefix, Mle::MeshLocalPrefix); +DefineCoreType(otLeaderData, Mle::LeaderData); +DefineMapEnum(otDeviceRole, Mle::DeviceRole); + } // namespace ot #endif // MLE_TYPES_HPP_ diff --git a/src/core/thread/network_data_types.hpp b/src/core/thread/network_data_types.hpp index 8773e4c4b..fbc928a8d 100644 --- a/src/core/thread/network_data_types.hpp +++ b/src/core/thread/network_data_types.hpp @@ -38,6 +38,7 @@ #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/data.hpp" #include "common/debug.hpp" @@ -348,6 +349,11 @@ private: } // namespace NetworkData +DefineCoreType(otBorderRouterConfig, NetworkData::OnMeshPrefixConfig); +DefineCoreType(otExternalRouteConfig, NetworkData::ExternalRouteConfig); +DefineCoreType(otServiceConfig, NetworkData::ServiceConfig); +DefineCoreType(otServerConfig, NetworkData::ServiceConfig::ServerConfig); + /** * @} */ diff --git a/src/core/thread/topology.hpp b/src/core/thread/topology.hpp index 0a0546968..31e7f7261 100644 --- a/src/core/thread/topology.hpp +++ b/src/core/thread/topology.hpp @@ -38,6 +38,7 @@ #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/equatable.hpp" #include "common/linked_list.hpp" @@ -1463,6 +1464,12 @@ private: #endif }; +DefineCoreType(otNeighborInfo, Neighbor::Info); +#if OPENTHREAD_FTD +DefineCoreType(otChildInfo, Child::Info); +#endif +DefineCoreType(otRouterInfo, Router::Info); + } // namespace ot #endif // TOPOLOGY_HPP_ diff --git a/src/core/utils/history_tracker.hpp b/src/core/utils/history_tracker.hpp index 181b76f4a..a2b80c0f0 100644 --- a/src/core/utils/history_tracker.hpp +++ b/src/core/utils/history_tracker.hpp @@ -41,6 +41,7 @@ #include #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/locator.hpp" #include "common/non_copyable.hpp" @@ -395,6 +396,12 @@ private: }; } // namespace Utils + +DefineCoreType(otHistoryTrackerIterator, Utils::HistoryTracker::Iterator); +DefineCoreType(otHistoryTrackerNetworkInfo, Utils::HistoryTracker::NetworkInfo); +DefineCoreType(otHistoryTrackerMessageInfo, Utils::HistoryTracker::MessageInfo); +DefineCoreType(otHistoryTrackerNeighborInfo, Utils::HistoryTracker::NeighborInfo); + } // namespace ot #endif // OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE diff --git a/src/core/utils/ping_sender.hpp b/src/core/utils/ping_sender.hpp index 9de352feb..b4f97c97c 100644 --- a/src/core/utils/ping_sender.hpp +++ b/src/core/utils/ping_sender.hpp @@ -40,6 +40,7 @@ #include +#include "common/as_core_type.hpp" #include "common/code_utils.hpp" #include "common/locator.hpp" #include "common/message.hpp" @@ -184,6 +185,11 @@ private: }; } // namespace Utils + +DefineCoreType(otPingSenderReply, Utils::PingSender::Reply); +DefineCoreType(otPingSenderConfig, Utils::PingSender::Config); +DefineCoreType(otPingSenderStatistics, Utils::PingSender::Statistics); + } // namespace ot #endif // OPENTHREAD_CONFIG_PING_SENDER_ENABLE diff --git a/src/core/utils/srp_client_buffers.hpp b/src/core/utils/srp_client_buffers.hpp index f98c223a1..fc4944173 100644 --- a/src/core/utils/srp_client_buffers.hpp +++ b/src/core/utils/srp_client_buffers.hpp @@ -36,8 +36,11 @@ #include "openthread-core-config.h" +#if OPENTHREAD_CONFIG_SRP_CLIENT_BUFFERS_ENABLE + #include +#include "common/as_core_type.hpp" #include "common/clearable.hpp" #include "common/locator.hpp" #include "common/non_copyable.hpp" @@ -47,8 +50,6 @@ namespace ot { namespace Utils { -#if OPENTHREAD_CONFIG_SRP_CLIENT_BUFFERS_ENABLE - #if !OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE #error "OPENTHREAD_CONFIG_SRP_CLIENT_BUFFERS_ENABLE requires OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE feature." #endif @@ -260,9 +261,12 @@ private: Pool mServicePool; }; -#endif // OPENTHREAD_CONFIG_SRP_CLIENT_BUFFERS_ENABLE - } // namespace Utils + +DefineCoreType(otSrpClientBuffersServiceEntry, Utils::SrpClientBuffers::ServiceEntry); + } // namespace ot +#endif // OPENTHREAD_CONFIG_SRP_CLIENT_BUFFERS_ENABLE + #endif // SRP_CLIENT_BUFFERS_HPP_