[coap] misc enhancements (#5482)

This commit contains a group of smaller changes/renames in `Coap`
modules:
- Add enumeration (c++ style) constants for CoAP `Type` and `Code`
  and `OptionType`.
- Add helpers `Message::Is{Method}Request()` e.g., `IsPostRequest()`
- Define Thread URI Paths (in `uri_paths.hpp/cpp`) as char array.
- Add helper method in `Coap::Message` for common initializations
  e.g., `InitAsConfirmablePost()`.
- Add helper methods for common `Coap:Message` type and code checks
  e.g., `IsConfirmablePost()`.
- Re-define `OT_COAP_TYPE` values to use 2-bit unsigned int values
  (per RFC-7252).
This commit is contained in:
Abtin Keshavarzian
2020-09-02 19:47:50 -07:00
committed by GitHub
parent 7b6c41d329
commit ece6ac61e6
40 changed files with 752 additions and 682 deletions
+1
View File
@@ -275,6 +275,7 @@ LOCAL_SRC_FILES := \
src/core/thread/thread_netif.cpp \
src/core/thread/tmf.cpp \
src/core/thread/topology.cpp \
src/core/thread/uri_paths.cpp \
src/core/utils/channel_manager.cpp \
src/core/utils/channel_monitor.cpp \
src/core/utils/child_supervision.cpp \
+7 -5
View File
@@ -58,6 +58,8 @@ extern "C" {
#define OT_DEFAULT_COAP_PORT 5683 ///< Default CoAP port, as specified in RFC 7252
#define OT_COAP_DEFAULT_TOKEN_LENGTH 2 ///< Default token length.
#define OT_COAP_MAX_TOKEN_LENGTH 8 ///< Max token length as specified (RFC 7252).
#define OT_COAP_MAX_RETRANSMIT 20 ///< Max retransmit supported by OpenThread.
@@ -65,15 +67,15 @@ extern "C" {
#define OT_COAP_MIN_ACK_TIMEOUT 1000 ///< Minimal ACK timeout in milliseconds supported by OpenThread.
/**
* CoAP Type values.
* CoAP Type values (2 bit unsigned integer).
*
*/
typedef enum otCoapType
{
OT_COAP_TYPE_CONFIRMABLE = 0x00, ///< Confirmable
OT_COAP_TYPE_NON_CONFIRMABLE = 0x10, ///< Non-confirmable
OT_COAP_TYPE_ACKNOWLEDGMENT = 0x20, ///< Acknowledgment
OT_COAP_TYPE_RESET = 0x30, ///< Reset
OT_COAP_TYPE_CONFIRMABLE = 0, ///< Confirmable
OT_COAP_TYPE_NON_CONFIRMABLE = 1, ///< Non-confirmable
OT_COAP_TYPE_ACKNOWLEDGMENT = 2, ///< Acknowledgment
OT_COAP_TYPE_RESET = 3, ///< Reset
} otCoapType;
/**
+1 -1
View File
@@ -53,7 +53,7 @@ extern "C" {
* @note This number versions both OpenThread platform and user APIs.
*
*/
#define OPENTHREAD_API_VERSION (26)
#define OPENTHREAD_API_VERSION (27)
/**
* @addtogroup api-instance
+1 -1
View File
@@ -447,7 +447,7 @@ otError Coap::ProcessRequest(uint8_t aArgsLength, char *aArgs[])
VerifyOrExit(message != nullptr, error = OT_ERROR_NO_BUFS);
otCoapMessageInit(message, coapType, coapCode);
otCoapMessageGenerateToken(message, ot::Coap::Message::kDefaultTokenLength);
otCoapMessageGenerateToken(message, OT_COAP_DEFAULT_TOKEN_LENGTH);
#if OPENTHREAD_CONFIG_COAP_OBSERVE_API_ENABLE
if (coapObserve)
+1 -1
View File
@@ -284,7 +284,7 @@ otError CoapSecure::ProcessRequest(uint8_t aArgsLength, char *aArgs[])
VerifyOrExit(message != nullptr, error = OT_ERROR_NO_BUFS);
otCoapMessageInit(message, coapType, coapCode);
otCoapMessageGenerateToken(message, ot::Coap::Message::kDefaultTokenLength);
otCoapMessageGenerateToken(message, OT_COAP_DEFAULT_TOKEN_LENGTH);
SuccessOrExit(error = otCoapMessageAppendUriPathOptions(message, coapUri));
if (aArgsLength > (4 - indexShifter))
+2 -1
View File
@@ -537,13 +537,14 @@ openthread_core_files = [
"thread/thread_netif.cpp",
"thread/thread_netif.hpp",
"thread/thread_tlvs.hpp",
"thread/thread_uri_paths.hpp",
"thread/time_sync_service.cpp",
"thread/time_sync_service.hpp",
"thread/tmf.cpp",
"thread/tmf.hpp",
"thread/topology.cpp",
"thread/topology.hpp",
"thread/uri_paths.cpp",
"thread/uri_paths.hpp",
"utils/channel_manager.cpp",
"utils/channel_manager.hpp",
"utils/channel_monitor.cpp",
+1
View File
@@ -205,6 +205,7 @@ set(COMMON_SOURCES
thread/time_sync_service.cpp
thread/tmf.cpp
thread/topology.cpp
thread/uri_paths.cpp
utils/channel_manager.cpp
utils/channel_monitor.cpp
utils/child_supervision.cpp
+2 -1
View File
@@ -247,6 +247,7 @@ SOURCES_COMMON = \
thread/time_sync_service.cpp \
thread/tmf.cpp \
thread/topology.cpp \
thread/uri_paths.cpp \
utils/channel_manager.cpp \
utils/channel_monitor.cpp \
utils/child_supervision.cpp \
@@ -469,10 +470,10 @@ HEADERS_COMMON = \
thread/src_match_controller.hpp \
thread/thread_netif.hpp \
thread/thread_tlvs.hpp \
thread/thread_uri_paths.hpp \
thread/time_sync_service.hpp \
thread/tmf.hpp \
thread/topology.hpp \
thread/uri_paths.hpp \
utils/channel_manager.hpp \
utils/channel_monitor.hpp \
utils/child_supervision.hpp \
+4 -4
View File
@@ -52,7 +52,7 @@ otMessage *otCoapNewMessage(otInstance *aInstance, const otMessageSettings *aSet
void otCoapMessageInit(otMessage *aMessage, otCoapType aType, otCoapCode aCode)
{
static_cast<Coap::Message *>(aMessage)->Init(aType, aCode);
static_cast<Coap::Message *>(aMessage)->Init(static_cast<Coap::Type>(aType), static_cast<Coap::Code>(aCode));
}
otError otCoapMessageInitResponse(otMessage *aResponse, const otMessage *aRequest, otCoapType aType, otCoapCode aCode)
@@ -60,7 +60,7 @@ otError otCoapMessageInitResponse(otMessage *aResponse, const otMessage *aReques
Coap::Message & response = *static_cast<Coap::Message *>(aResponse);
const Coap::Message &request = *static_cast<const Coap::Message *>(aRequest);
response.Init(aType, aCode);
response.Init(static_cast<Coap::Type>(aType), static_cast<Coap::Code>(aCode));
response.SetMessageId(request.GetMessageId());
return response.SetToken(request.GetToken(), request.GetTokenLength());
@@ -139,12 +139,12 @@ otError otCoapMessageSetPayloadMarker(otMessage *aMessage)
otCoapType otCoapMessageGetType(const otMessage *aMessage)
{
return static_cast<const Coap::Message *>(aMessage)->GetType();
return static_cast<otCoapType>(static_cast<const Coap::Message *>(aMessage)->GetType());
}
otCoapCode otCoapMessageGetCode(const otMessage *aMessage)
{
return static_cast<const Coap::Message *>(aMessage)->GetCode();
return static_cast<otCoapCode>(static_cast<const Coap::Message *>(aMessage)->GetCode());
}
const char *otCoapMessageCodeToString(const otMessage *aMessage)
+5 -5
View File
@@ -45,7 +45,7 @@
#include "thread/mle_types.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
@@ -53,8 +53,8 @@ namespace BackboneRouter {
Manager::Manager(Instance &aInstance)
: InstanceLocator(aInstance)
, mMulticastListenerRegistration(OT_URI_PATH_MLR, Manager::HandleMulticastListenerRegistration, this)
, mDuaRegistration(OT_URI_PATH_DUA_REGISTRATION_REQUEST, Manager::HandleDuaRegistration, this)
, mMulticastListenerRegistration(UriPath::kMlr, Manager::HandleMulticastListenerRegistration, this)
, mDuaRegistration(UriPath::kDuaRegistrationRequest, Manager::HandleDuaRegistration, this)
, mMulticastListenersTable(aInstance)
, mTimer(aInstance, Manager::HandleTimer, this)
#if OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE
@@ -114,7 +114,7 @@ void Manager::HandleMulticastListenerRegistration(const Coap::Message &aMessage,
bool hasCommissionerSessionIdTlv = false;
bool processTimeoutTlv = false;
VerifyOrExit(aMessage.IsConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, error = OT_ERROR_PARSE);
VerifyOrExit(aMessage.IsConfirmablePostRequest(), error = OT_ERROR_PARSE);
#if OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE
// Required by Test Specification 5.10.22 DUA-TC-26, only for certification purpose
@@ -276,7 +276,7 @@ void Manager::HandleDuaRegistration(const Coap::Message &aMessage, const Ip6::Me
Ip6::Address target;
Ip6::InterfaceIdentifier meshLocalIid;
VerifyOrExit(aMessage.IsConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, error = OT_ERROR_PARSE);
VerifyOrExit(aMessage.IsConfirmablePostRequest(), error = OT_ERROR_PARSE);
SuccessOrExit(error = Tlv::FindTlv(aMessage, ThreadTlv::kTarget, &target, sizeof(target)));
SuccessOrExit(error = Tlv::FindTlv(aMessage, ThreadTlv::kMeshLocalEid, &meshLocalIid, sizeof(meshLocalIid)));
@@ -42,7 +42,7 @@
#include "common/random.hpp"
#include "thread/mle_types.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
+25 -25
View File
@@ -141,11 +141,11 @@ otError CoapBase::SendMessage(Message & aMessage,
switch (aMessage.GetType())
{
case OT_COAP_TYPE_ACKNOWLEDGMENT:
case kTypeAck:
mResponsesQueue.EnqueueResponse(aMessage, aMessageInfo, aTxParameters);
break;
case OT_COAP_TYPE_RESET:
OT_ASSERT(aMessage.GetCode() == OT_COAP_CODE_EMPTY);
case kTypeReset:
OT_ASSERT(aMessage.GetCode() == kCodeEmpty);
break;
default:
aMessage.SetMessageId(mMessageId++);
@@ -175,10 +175,10 @@ otError CoapBase::SendMessage(Message & aMessage,
bool observe;
SuccessOrExit(error = iterator.Init(&aMessage));
observe = (iterator.GetFirstOptionMatching(OT_COAP_OPTION_OBSERVE) != nullptr);
observe = (iterator.GetFirstOptionMatching(kOptionObserve) != nullptr);
// Special case, if we're sending a GET with Observe=1, that is a cancellation.
if (observe && (aMessage.GetCode() == OT_COAP_CODE_GET))
if (observe && aMessage.IsGetRequest())
{
uint64_t observeVal = 0;
@@ -244,26 +244,26 @@ otError CoapBase::SendMessage(Message & aMessage,
otError CoapBase::SendReset(Message &aRequest, const Ip6::MessageInfo &aMessageInfo)
{
return SendEmptyMessage(OT_COAP_TYPE_RESET, aRequest, aMessageInfo);
return SendEmptyMessage(kTypeReset, aRequest, aMessageInfo);
}
otError CoapBase::SendAck(const Message &aRequest, const Ip6::MessageInfo &aMessageInfo)
{
return SendEmptyMessage(OT_COAP_TYPE_ACKNOWLEDGMENT, aRequest, aMessageInfo);
return SendEmptyMessage(kTypeAck, aRequest, aMessageInfo);
}
otError CoapBase::SendEmptyAck(const Message &aRequest, const Ip6::MessageInfo &aMessageInfo)
{
return (aRequest.IsConfirmable() ? SendHeaderResponse(OT_COAP_CODE_CHANGED, aRequest, aMessageInfo)
return (aRequest.IsConfirmable() ? SendHeaderResponse(kCodeChanged, aRequest, aMessageInfo)
: OT_ERROR_INVALID_ARGS);
}
otError CoapBase::SendNotFound(const Message &aRequest, const Ip6::MessageInfo &aMessageInfo)
{
return SendHeaderResponse(OT_COAP_CODE_NOT_FOUND, aRequest, aMessageInfo);
return SendHeaderResponse(kCodeNotFound, aRequest, aMessageInfo);
}
otError CoapBase::SendEmptyMessage(Message::Type aType, const Message &aRequest, const Ip6::MessageInfo &aMessageInfo)
otError CoapBase::SendEmptyMessage(Type aType, const Message &aRequest, const Ip6::MessageInfo &aMessageInfo)
{
otError error = OT_ERROR_NONE;
Message *message = nullptr;
@@ -272,7 +272,7 @@ otError CoapBase::SendEmptyMessage(Message::Type aType, const Message &aRequest,
VerifyOrExit((message = NewMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
message->Init(aType, OT_COAP_CODE_EMPTY);
message->Init(aType, kCodeEmpty);
message->SetMessageId(aRequest.GetMessageId());
message->Finish();
@@ -298,13 +298,13 @@ otError CoapBase::SendHeaderResponse(Message::Code aCode, const Message &aReques
switch (aRequest.GetType())
{
case OT_COAP_TYPE_CONFIRMABLE:
message->Init(OT_COAP_TYPE_ACKNOWLEDGMENT, aCode);
case kTypeConfirmable:
message->Init(kTypeAck, aCode);
message->SetMessageId(aRequest.GetMessageId());
break;
case OT_COAP_TYPE_NON_CONFIRMABLE:
message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, aCode);
case kTypeNonConfirmable:
message->Init(kTypeNonConfirmable, aCode);
break;
default:
@@ -506,8 +506,8 @@ Message *CoapBase::FindRelatedRequest(const Message & aResponse,
{
switch (aResponse.GetType())
{
case OT_COAP_TYPE_RESET:
case OT_COAP_TYPE_ACKNOWLEDGMENT:
case kTypeReset:
case kTypeAck:
if (aResponse.GetMessageId() == message->GetMessageId())
{
ExitNow();
@@ -515,8 +515,8 @@ Message *CoapBase::FindRelatedRequest(const Message & aResponse,
break;
case OT_COAP_TYPE_CONFIRMABLE:
case OT_COAP_TYPE_NON_CONFIRMABLE:
case kTypeConfirmable:
case kTypeNonConfirmable:
if (aResponse.IsTokenEqual(*message))
{
ExitNow();
@@ -573,13 +573,13 @@ void CoapBase::ProcessReceivedResponse(Message &aMessage, const Ip6::MessageInfo
OptionIterator iterator;
SuccessOrExit(error = iterator.Init(&aMessage));
responseObserve = (iterator.GetFirstOptionMatching(OT_COAP_OPTION_OBSERVE) != nullptr);
responseObserve = (iterator.GetFirstOptionMatching(kOptionObserve) != nullptr);
}
#endif
switch (aMessage.GetType())
{
case OT_COAP_TYPE_RESET:
case kTypeReset:
if (aMessage.IsEmpty())
{
FinalizeCoapTransaction(*request, metadata, nullptr, nullptr, OT_ERROR_ABORT);
@@ -588,7 +588,7 @@ void CoapBase::ProcessReceivedResponse(Message &aMessage, const Ip6::MessageInfo
// Silently ignore non-empty reset messages (RFC 7252, p. 4.2).
break;
case OT_COAP_TYPE_ACKNOWLEDGMENT:
case kTypeAck:
if (aMessage.IsEmpty())
{
// Empty acknowledgment.
@@ -646,12 +646,12 @@ void CoapBase::ProcessReceivedResponse(Message &aMessage, const Ip6::MessageInfo
// or with no token match (RFC 7252, p. 5.3.2)
break;
case OT_COAP_TYPE_CONFIRMABLE:
case kTypeConfirmable:
// Send empty ACK if it is a CON message.
IgnoreError(SendAck(aMessage, aMessageInfo));
// Fall through
// Handling of RFC7641 and multicast is below.
case OT_COAP_TYPE_NON_CONFIRMABLE:
case kTypeNonConfirmable:
// Separate response or observation notification. If the request was to a multicast
// address, OR both the request and response carry Observe options, then this is NOT
// the final message, we may see multiples.
@@ -719,7 +719,7 @@ void CoapBase::ProcessReceivedRequest(Message &aMessage, const Ip6::MessageInfo
{
switch (option->mNumber)
{
case OT_COAP_OPTION_URI_PATH:
case kOptionUriPath:
if (curUriPath != uriPath)
{
*curUriPath++ = '/';
+1 -1
View File
@@ -568,7 +568,7 @@ private:
void ProcessReceivedResponse(Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
void SendCopy(const Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
otError SendEmptyMessage(Message::Type aType, const Message &aRequest, const Ip6::MessageInfo &aMessageInfo);
otError SendEmptyMessage(Type aType, const Message &aRequest, const Ip6::MessageInfo &aMessageInfo);
otError Send(ot::Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
+109 -70
View File
@@ -72,6 +72,41 @@ exit:
return error;
}
void Message::InitAsConfirmablePost(void)
{
Init(kTypeConfirmable, kCodePost);
}
void Message::InitAsNonConfirmablePost(void)
{
Init(kTypeNonConfirmable, kCodePost);
}
otError Message::InitAsConfirmablePost(const char *aUriPath)
{
return Init(kTypeConfirmable, kCodePost, aUriPath);
}
otError Message::InitAsNonConfirmablePost(const char *aUriPath)
{
return Init(kTypeNonConfirmable, kCodePost, aUriPath);
}
otError Message::InitAsPost(const Ip6::Address &aDestination, const char *aUriPath)
{
return Init(aDestination.IsMulticast() ? kTypeNonConfirmable : kTypeConfirmable, kCodePost, aUriPath);
}
bool Message::IsConfirmablePostRequest(void) const
{
return IsConfirmable() && IsPostRequest();
}
bool Message::IsNonConfirmablePostRequest(void) const
{
return IsNonConfirmable() && IsPostRequest();
}
void Message::Finish(void)
{
Write(0, GetOptionStart(), &GetHelpData().mHeader);
@@ -166,7 +201,7 @@ otError Message::AppendStringOption(uint16_t aNumber, const char *aValue)
otError Message::AppendObserveOption(uint32_t aObserve)
{
return AppendUintOption(OT_COAP_OPTION_OBSERVE, aObserve & 0xFFFFFF);
return AppendUintOption(kOptionObserve, aObserve & 0xFFFFFF);
}
otError Message::AppendUriPathOptions(const char *aUriPath)
@@ -177,11 +212,11 @@ otError Message::AppendUriPathOptions(const char *aUriPath)
while ((end = strchr(cur, '/')) != nullptr)
{
SuccessOrExit(error = AppendOption(OT_COAP_OPTION_URI_PATH, static_cast<uint16_t>(end - cur), cur));
SuccessOrExit(error = AppendOption(kOptionUriPath, static_cast<uint16_t>(end - cur), cur));
cur = end + 1;
}
SuccessOrExit(error = AppendStringOption(OT_COAP_OPTION_URI_PATH, cur));
SuccessOrExit(error = AppendStringOption(kOptionUriPath, cur));
exit:
return error;
@@ -199,7 +234,7 @@ otError Message::AppendBlockOption(Message::BlockType aType, uint32_t aNum, bool
encoded |= static_cast<uint32_t>(aMore << kBlockMOffset);
encoded |= aNum << kBlockNumOffset;
error = AppendUintOption((aType == kBlockType1) ? OT_COAP_OPTION_BLOCK1 : OT_COAP_OPTION_BLOCK2, encoded);
error = AppendUintOption((aType == kBlockType1) ? kOptionBlock1 : kOptionBlock2, encoded);
exit:
return error;
@@ -207,22 +242,22 @@ exit:
otError Message::AppendProxyUriOption(const char *aProxyUri)
{
return AppendStringOption(OT_COAP_OPTION_PROXY_URI, aProxyUri);
return AppendStringOption(kOptionProxyUri, aProxyUri);
}
otError Message::AppendContentFormatOption(otCoapOptionContentFormat aContentFormat)
{
return AppendUintOption(OT_COAP_OPTION_CONTENT_FORMAT, static_cast<uint32_t>(aContentFormat));
return AppendUintOption(kOptionContentFormat, static_cast<uint32_t>(aContentFormat));
}
otError Message::AppendMaxAgeOption(uint32_t aMaxAge)
{
return AppendUintOption(OT_COAP_OPTION_MAX_AGE, aMaxAge);
return AppendUintOption(kOptionMaxAge, aMaxAge);
}
otError Message::AppendUriQueryOption(const char *aUriQuery)
{
return AppendStringOption(OT_COAP_OPTION_URI_QUERY, aUriQuery);
return AppendStringOption(kOptionUriQuery, aUriQuery);
}
otError Message::SetPayloadMarker(void)
@@ -272,9 +307,10 @@ exit:
otError Message::SetToken(const uint8_t *aToken, uint8_t aTokenLength)
{
GetHelpData().mHeader.mVersionTypeToken = (GetHelpData().mHeader.mVersionTypeToken & ~kTokenLengthMask) |
((aTokenLength << kTokenLengthOffset) & kTokenLengthMask);
memcpy(GetHelpData().mHeader.mToken, aToken, aTokenLength);
OT_ASSERT(aTokenLength <= kMaxTokenLength);
SetTokenLength(aTokenLength);
memcpy(GetToken(), aToken, aTokenLength);
GetHelpData().mHeaderLength += aTokenLength;
return SetLength(GetHelpData().mHeaderLength);
@@ -282,7 +318,7 @@ otError Message::SetToken(const uint8_t *aToken, uint8_t aTokenLength)
otError Message::SetToken(uint8_t aTokenLength)
{
uint8_t token[kMaxTokenLength] = {0};
uint8_t token[kMaxTokenLength];
OT_ASSERT(aTokenLength <= sizeof(token));
@@ -293,7 +329,7 @@ otError Message::SetToken(uint8_t aTokenLength)
otError Message::SetDefaultResponseHeader(const Message &aRequest)
{
Init(OT_COAP_TYPE_ACKNOWLEDGMENT, OT_COAP_CODE_CHANGED);
Init(kTypeAck, kCodeChanged);
SetMessageId(aRequest.GetMessageId());
@@ -315,97 +351,100 @@ exit:
#if OPENTHREAD_CONFIG_COAP_API_ENABLE
const char *Message::CodeToString(void) const
{
const char *codeString;
const char *string;
switch (GetCode())
{
case OT_COAP_CODE_INTERNAL_ERROR:
codeString = "InternalError";
case kCodeEmpty:
string = "Empty";
break;
case OT_COAP_CODE_METHOD_NOT_ALLOWED:
codeString = "MethodNotAllowed";
case kCodeGet:
string = "Get";
break;
case OT_COAP_CODE_CONTENT:
codeString = "Content";
case kCodePost:
string = "Post";
break;
case OT_COAP_CODE_EMPTY:
codeString = "Empty";
case kCodePut:
string = "Put";
break;
case OT_COAP_CODE_GET:
codeString = "Get";
case kCodeDelete:
string = "Delete";
break;
case OT_COAP_CODE_POST:
codeString = "Post";
case kCodeCreated:
string = "Created";
break;
case OT_COAP_CODE_PUT:
codeString = "Put";
case kCodeDeleted:
string = "Deleted";
break;
case OT_COAP_CODE_DELETE:
codeString = "Delete";
case kCodeValid:
string = "Valid";
break;
case OT_COAP_CODE_NOT_FOUND:
codeString = "NotFound";
case kCodeChanged:
string = "Changed";
break;
case OT_COAP_CODE_UNSUPPORTED_FORMAT:
codeString = "UnsupportedFormat";
case kCodeContent:
string = "Content";
break;
case OT_COAP_CODE_RESPONSE_MIN:
codeString = "ResponseMin";
case kCodeContinue:
string = "Continue";
break;
case OT_COAP_CODE_CREATED:
codeString = "Created";
case kCodeBadRequest:
string = "BadRequest";
break;
case OT_COAP_CODE_DELETED:
codeString = "Deleted";
case kCodeUnauthorized:
string = "Unauthorized";
break;
case OT_COAP_CODE_VALID:
codeString = "Valid";
case kCodeBadOption:
string = "BadOption";
break;
case OT_COAP_CODE_CHANGED:
codeString = "Changed";
case kCodeForbidden:
string = "Forbidden";
break;
case OT_COAP_CODE_BAD_REQUEST:
codeString = "BadRequest";
case kCodeNotFound:
string = "NotFound";
break;
case OT_COAP_CODE_UNAUTHORIZED:
codeString = "Unauthorized";
case kCodeMethodNotAllowed:
string = "MethodNotAllowed";
break;
case OT_COAP_CODE_BAD_OPTION:
codeString = "BadOption";
case kCodeNotAcceptable:
string = "NotAcceptable";
break;
case OT_COAP_CODE_FORBIDDEN:
codeString = "Forbidden";
case kCodeRequestIncomplete:
string = "RequestIncomplete";
break;
case OT_COAP_CODE_NOT_ACCEPTABLE:
codeString = "NotAcceptable";
case kCodePreconditionFailed:
string = "PreconditionFailed";
break;
case OT_COAP_CODE_PRECONDITION_FAILED:
codeString = "PreconditionFailed";
case kCodeRequestTooLarge:
string = "RequestTooLarge";
break;
case OT_COAP_CODE_REQUEST_TOO_LARGE:
codeString = "RequestTooLarge";
case kCodeUnsupportedFormat:
string = "UnsupportedFormat";
break;
case OT_COAP_CODE_NOT_IMPLEMENTED:
codeString = "NotImplemented";
case kCodeInternalError:
string = "InternalError";
break;
case OT_COAP_CODE_BAD_GATEWAY:
codeString = "BadGateway";
case kCodeNotImplemented:
string = "NotImplemented";
break;
case OT_COAP_CODE_SERVICE_UNAVAILABLE:
codeString = "ServiceUnavailable";
case kCodeBadGateway:
string = "BadGateway";
break;
case OT_COAP_CODE_GATEWAY_TIMEOUT:
codeString = "GatewayTimeout";
case kCodeServiceUnavailable:
string = "ServiceUnavailable";
break;
case OT_COAP_CODE_PROXY_NOT_SUPPORTED:
codeString = "ProxyNotSupported";
case kCodeGatewayTimeout:
string = "GatewayTimeout";
break;
case kCodeProxyNotSupported:
string = "ProxyNotSupported";
break;
default:
codeString = "Unknown";
string = "Unknown";
break;
}
return codeString;
return string;
}
#endif // OPENTHREAD_CONFIG_COAP_API_ENABLE
+264 -51
View File
@@ -42,6 +42,7 @@
#include "common/code_utils.hpp"
#include "common/encoding.hpp"
#include "common/message.hpp"
#include "net/ip6_address.hpp"
namespace ot {
@@ -67,6 +68,91 @@ using ot::Encoding::BigEndian::HostSwap16;
class OptionIterator;
/**
* CoAP Type values.
*
*/
enum Type : uint8_t
{
kTypeConfirmable = OT_COAP_TYPE_CONFIRMABLE, ///< Confirmable type.
kTypeNonConfirmable = OT_COAP_TYPE_NON_CONFIRMABLE, ///< Non-confirmable type.
kTypeAck = OT_COAP_TYPE_ACKNOWLEDGMENT, ///< Acknowledgment type.
kTypeReset = OT_COAP_TYPE_RESET, ///< Reset type.
};
/**
* CoAP Code values.
*
*/
enum Code : uint8_t
{
// Request Codes:
kCodeEmpty = OT_COAP_CODE_EMPTY, ///< Empty message code
kCodeGet = OT_COAP_CODE_GET, ///< Get
kCodePost = OT_COAP_CODE_POST, ///< Post
kCodePut = OT_COAP_CODE_PUT, ///< Put
kCodeDelete = OT_COAP_CODE_DELETE, ///< Delete
// Response Codes:
kCodeCreated = OT_COAP_CODE_CREATED, ///< Created
kCodeDeleted = OT_COAP_CODE_DELETED, ///< Deleted
kCodeValid = OT_COAP_CODE_VALID, ///< Valid
kCodeChanged = OT_COAP_CODE_CHANGED, ///< Changed
kCodeContent = OT_COAP_CODE_CONTENT, ///< Content
kCodeContinue = OT_COAP_CODE_CONTINUE, ///< RFC7959 Continue
// Client Error Codes:
kCodeBadRequest = OT_COAP_CODE_BAD_REQUEST, ///< Bad Request
kCodeUnauthorized = OT_COAP_CODE_UNAUTHORIZED, ///< Unauthorized
kCodeBadOption = OT_COAP_CODE_BAD_OPTION, ///< Bad Option
kCodeForbidden = OT_COAP_CODE_FORBIDDEN, ///< Forbidden
kCodeNotFound = OT_COAP_CODE_NOT_FOUND, ///< Not Found
kCodeMethodNotAllowed = OT_COAP_CODE_METHOD_NOT_ALLOWED, ///< Method Not Allowed
kCodeNotAcceptable = OT_COAP_CODE_NOT_ACCEPTABLE, ///< Not Acceptable
kCodeRequestIncomplete = OT_COAP_CODE_REQUEST_INCOMPLETE, ///< RFC7959 Request Entity Incomplete
kCodePreconditionFailed = OT_COAP_CODE_PRECONDITION_FAILED, ///< Precondition Failed
kCodeRequestTooLarge = OT_COAP_CODE_REQUEST_TOO_LARGE, ///< Request Entity Too Large
kCodeUnsupportedFormat = OT_COAP_CODE_UNSUPPORTED_FORMAT, ///< Unsupported Content-Format
// Server Error Codes:
kCodeInternalError = OT_COAP_CODE_INTERNAL_ERROR, ///< Internal Server Error
kCodeNotImplemented = OT_COAP_CODE_NOT_IMPLEMENTED, ///< Not Implemented
kCodeBadGateway = OT_COAP_CODE_BAD_GATEWAY, ///< Bad Gateway
kCodeServiceUnavailable = OT_COAP_CODE_SERVICE_UNAVAILABLE, ///< Service Unavailable
kCodeGatewayTimeout = OT_COAP_CODE_GATEWAY_TIMEOUT, ///< Gateway Timeout
kCodeProxyNotSupported = OT_COAP_CODE_PROXY_NOT_SUPPORTED, ///< Proxying Not Supported
};
/**
* CoAP Option Numbers.
*
*/
enum : uint16_t
{
kOptionIfMatch = OT_COAP_OPTION_IF_MATCH, ///< If-Match
kOptionUriHost = OT_COAP_OPTION_URI_HOST, ///< Uri-Host
kOptionETag = OT_COAP_OPTION_E_TAG, ///< ETag
kOptionIfNoneMatch = OT_COAP_OPTION_IF_NONE_MATCH, ///< If-None-Match
kOptionObserve = OT_COAP_OPTION_OBSERVE, ///< Observe [RFC7641]
kOptionUriPort = OT_COAP_OPTION_URI_PORT, ///< Uri-Port
kOptionLocationPath = OT_COAP_OPTION_LOCATION_PATH, ///< Location-Path
kOptionUriPath = OT_COAP_OPTION_URI_PATH, ///< Uri-Path
kOptionContentFormat = OT_COAP_OPTION_CONTENT_FORMAT, ///< Content-Format
kOptionMaxAge = OT_COAP_OPTION_MAX_AGE, ///< Max-Age
kOptionUriQuery = OT_COAP_OPTION_URI_QUERY, ///< Uri-Query
kOptionAccept = OT_COAP_OPTION_ACCEPT, ///< Accept
kOptionLocationQuery = OT_COAP_OPTION_LOCATION_QUERY, ///< Location-Query
kOptionBlock2 = OT_COAP_OPTION_BLOCK2, ///< Block2 (RFC7959)
kOptionBlock1 = OT_COAP_OPTION_BLOCK1, ///< Block1 (RFC7959)
kOptionProxyUri = OT_COAP_OPTION_PROXY_URI, ///< Proxy-Uri
kOptionProxyScheme = OT_COAP_OPTION_PROXY_SCHEME, ///< Proxy-Scheme
kOptionSize1 = OT_COAP_OPTION_SIZE1, ///< Size1
};
/**
* This class implements CoAP message generation and parsing.
*
@@ -76,26 +162,14 @@ class Message : public ot::Message
friend class OptionIterator;
public:
enum
enum : uint8_t
{
kVersion1 = 1, ///< Version 1
kMinHeaderLength = 4, ///< Minimum header length
kMaxHeaderLength = 512, ///< Maximum header length
kDefaultTokenLength = 2, ///< Default token length
kTypeOffset = 4, ///< The type offset in the first byte of a CoAP header
kDefaultTokenLength = OT_COAP_DEFAULT_TOKEN_LENGTH, ///< Default token length
kMaxTokenLength = OT_COAP_MAX_TOKEN_LENGTH, ///< Maximum token length.
};
/**
* CoAP Type values.
*
*/
typedef otCoapType Type;
/**
* CoAP Code values.
*
*/
typedef otCoapCode Code;
typedef ot::Coap::Type Type; ///< CoAP Type.
typedef ot::Coap::Code Code; ///< CoAP Code.
/**
* CoAP Block1/Block2 Types
@@ -127,6 +201,18 @@ public:
*/
void Init(Type aType, Code aCode);
/**
* This method initializes the CoAP header as `kTypeConfirmable` and `kCodePost`.
*
*/
void InitAsConfirmablePost(void);
/**
* This method initializes the CoAP header as `kTypeNonConfirmable` and `kCodePost`.
*
*/
void InitAsNonConfirmablePost(void);
/**
* This method initializes the CoAP header with specific Type and Code.
*
@@ -140,6 +226,42 @@ public:
*/
otError Init(Type aType, Code aCode, const char *aUriPath);
/**
* This method initializes the CoAP header as `kTypeConfirmable` and `kCodePost` with a given URI Path.
*
* @param[in] aUriPath A pointer to a null-terminated string.
*
* @retval OT_ERROR_NONE Successfully appended the option.
* @retval OT_ERROR_NO_BUFS The option length exceeds the buffer size.
*
*/
otError InitAsConfirmablePost(const char *aUriPath);
/**
* This method initializes the CoAP header as `kTypeNonConfirmable` and `kCodePost` with a given URI Path.
*
* @param[in] aUriPath A pointer to a null-terminated string.
*
* @retval OT_ERROR_NONE Successfully appended the option.
* @retval OT_ERROR_NO_BUFS The option length exceeds the buffer size.
*
*/
otError InitAsNonConfirmablePost(const char *aUriPath);
/**
* This method initializes the CoAP header as `kCodePost` with a given URI Path with its type determined from a
* given destination IPv6 address.
*
* @param[in] aDestination The message destination IPv6 address used to determine the CoAP type,
* `kTypeNonConfirmable` if multicast address, `kTypeConfirmable` otherwise.
* @param[in] aUriPath A pointer to a null-terminated string.
*
* @retval OT_ERROR_NONE Successfully appended the option.
* @retval OT_ERROR_NO_BUFS The option length exceeds the buffer size.
*
*/
otError InitAsPost(const Ip6::Address &aDestination, const char *aUriPath);
/**
* This method writes header to the message. This must be called before sending the message.
*
@@ -175,7 +297,7 @@ public:
* @returns The Type value.
*
*/
Type GetType(void) const { return static_cast<Type>(GetHelpData().mHeader.mVersionTypeToken & kTypeMask); }
uint8_t GetType(void) const { return (GetHelpData().mHeader.mVersionTypeToken & kTypeMask) >> kTypeOffset; }
/**
* This method sets the Type value.
@@ -186,7 +308,7 @@ public:
void SetType(Type aType)
{
GetHelpData().mHeader.mVersionTypeToken &= ~kTypeMask;
GetHelpData().mHeader.mVersionTypeToken |= aType;
GetHelpData().mHeader.mVersionTypeToken |= (static_cast<uint8_t>(aType) << kTypeOffset);
}
/**
@@ -195,7 +317,7 @@ public:
* @returns The Code value.
*
*/
Code GetCode(void) const { return static_cast<Code>(GetHelpData().mHeader.mCode); }
uint8_t GetCode(void) const { return static_cast<Code>(GetHelpData().mHeader.mCode); }
/**
* This method sets the Code value.
@@ -457,7 +579,7 @@ public:
* @retval FALSE Message is not an empty message header.
*
*/
bool IsEmpty(void) const { return (GetCode() == 0); }
bool IsEmpty(void) const { return (GetCode() == kCodeEmpty); }
/**
* This method checks if a header is a request header.
@@ -466,7 +588,43 @@ public:
* @retval FALSE Message is not a request header.
*
*/
bool IsRequest(void) const { return (GetCode() >= OT_COAP_CODE_GET && GetCode() <= OT_COAP_CODE_DELETE); }
bool IsRequest(void) const { return (GetCode() >= kCodeGet) && (GetCode() <= kCodeDelete); }
/**
* This method indicates whether or not the CoAP code in header is "Get" request.
*
* @retval TRUE Message is a Get request.
* @retval FALSE Message is not a Get request.
*
*/
bool IsGetRequest(void) const { return GetCode() == kCodeGet; }
/**
* This method indicates whether or not the CoAP code in header is "Post" request.
*
* @retval TRUE Message is a Post request.
* @retval FALSE Message is not a Post request.
*
*/
bool IsPostRequest(void) const { return GetCode() == kCodePost; }
/**
* This method indicates whether or not the CoAP code in header is "Put" request.
*
* @retval TRUE Message is a Put request.
* @retval FALSE Message is not a Put request.
*
*/
bool IsPutRequest(void) const { return GetCode() == kCodePut; }
/**
* This method indicates whether or not the CoAP code in header is "Delete" request.
*
* @retval TRUE Message is a Delete request.
* @retval FALSE Message is not a Delete request.
*
*/
bool IsDeleteRequest(void) const { return GetCode() == kCodeDelete; }
/**
* This method checks if a header is a response header.
@@ -475,7 +633,7 @@ public:
* @retval FALSE Message is not a response header.
*
*/
bool IsResponse(void) const { return (GetCode() >= OT_COAP_CODE_RESPONSE_MIN); }
bool IsResponse(void) const { return GetCode() >= OT_COAP_CODE_RESPONSE_MIN; }
/**
* This method checks if a header is a CON message header.
@@ -484,7 +642,7 @@ public:
* @retval FALSE Message is not is a CON message header.
*
*/
bool IsConfirmable(void) const { return (GetType() == OT_COAP_TYPE_CONFIRMABLE); }
bool IsConfirmable(void) const { return (GetType() == kTypeConfirmable); }
/**
* This method checks if a header is a NON message header.
@@ -493,7 +651,7 @@ public:
* @retval FALSE Message is not is a NON message header.
*
*/
bool IsNonConfirmable(void) const { return (GetType() == OT_COAP_TYPE_NON_CONFIRMABLE); }
bool IsNonConfirmable(void) const { return (GetType() == kTypeNonConfirmable); }
/**
* This method checks if a header is a ACK message header.
@@ -502,7 +660,7 @@ public:
* @retval FALSE Message is not is a ACK message header.
*
*/
bool IsAck(void) const { return (GetType() == OT_COAP_TYPE_ACKNOWLEDGMENT); }
bool IsAck(void) const { return (GetType() == kTypeAck); }
/**
* This method checks if a header is a RST message header.
@@ -511,7 +669,27 @@ public:
* @retval FALSE Message is not is a RST message header.
*
*/
bool IsReset(void) const { return (GetType() == OT_COAP_TYPE_RESET); }
bool IsReset(void) const { return (GetType() == kTypeReset); }
/**
* This method indicates whether or not the header is a confirmable Put request (i.e, `kTypeConfirmable` with
* `kCodePost`).
*
* @retval TRUE Message is a confirmable Post request.
* @retval FALSE Message is not a confirmable Post request.
*
*/
bool IsConfirmablePostRequest(void) const;
/**
* This method indicates whether or not the header is a non-confirmable Put request (i.e, `kTypeNonConfirmable` with
* `kCodePost`).
*
* @retval TRUE Message is a non-confirmable Post request.
* @retval FALSE Message is not a non-confirmable Post request.
*
*/
bool IsNonConfirmablePostRequest(void) const;
/**
* This method creates a copy of this CoAP message.
@@ -568,35 +746,62 @@ public:
const Message *GetNextCoapMessage(void) const { return static_cast<const Message *>(GetNext()); }
private:
/**
* Protocol Constants (RFC 7252).
*
*/
enum
enum : uint8_t
{
kOptionDeltaOffset = 4, ///< Delta Offset
kOptionDeltaMask = 0xf << kOptionDeltaOffset, ///< Delta Mask
/*
* Header field first byte (RFC 7252).
*
* 7 6 5 4 3 2 1 0
* +-+-+-+-+-+-+-+-+
* |Ver| T | TKL | (Version, Type and Token Length).
* +-+-+-+-+-+-+-+-+
*/
kVersionOffset = 6,
kVersionMask = 0x3 << kVersionOffset,
kVersion1 = 1,
kTypeOffset = 4,
kTypeMask = 0x3 << kTypeOffset,
kTokenLengthOffset = 0,
kTokenLengthMask = 0xf << kTokenLengthOffset,
kMaxTokenLength = OT_COAP_MAX_TOKEN_LENGTH,
/*
*
* Option Format (RFC 7252).
*
* 7 6 5 4 3 2 1 0
* +---------------+---------------+
* | Option Delta | Option Length | 1 byte
* +---------------+---------------+
* / Option Delta / 0-2 bytes
* \ (extended) \
* +-------------------------------+
* / Option Length / 0-2 bytes
* \ (extended) \
* +-------------------------------+
* / Option Value / 0 or more bytes
* +-------------------------------+
*
*/
kVersionMask = 0xc0, ///< Version mask as specified (RFC 7252).
kVersionOffset = 6, ///< Version offset as specified (RFC 7252).
kOptionDeltaOffset = 4,
kOptionDeltaMask = 0xf << kOptionDeltaOffset,
kOptionLengthOffset = 0,
kOptionLengthMask = 0xf << kOptionLengthOffset,
kTypeMask = 0x30, ///< Type mask as specified (RFC 7252).
kMaxOptionHeaderSize = 5,
kOption1ByteExtension = 13, // Indicates a 1 byte extension (RFC 7252).
kOption2ByteExtension = 14, // Indicates a 2 byte extension (RFC 7252).
kTokenLengthMask = 0x0f, ///< Token Length mask as specified (RFC 7252).
kTokenLengthOffset = 0, ///< Token Length offset as specified (RFC 7252).
kTokenOffset = 4, ///< Token offset as specified (RFC 7252).
kHelpDataAlignment = sizeof(uint16_t), ///< Alignment of help data.
};
kMaxOptionHeaderSize = 5, ///< Maximum size of an Option header
kOption1ByteExtension = 13, ///< Indicates a 1 byte extension (RFC 7252).
kOption2ByteExtension = 14, ///< Indicates a 1 byte extension (RFC 7252).
enum : uint16_t
{
kMinHeaderLength = 4,
kMaxHeaderLength = 512,
kOption1ByteExtensionOffset = 13, ///< Delta/Length offset as specified (RFC 7252).
kOption2ByteExtensionOffset = 269, ///< Delta/Length offset as specified (RFC 7252).
kHelpDataAlignment = sizeof(uint16_t), ///< Alignment of help data.
};
enum
@@ -618,10 +823,10 @@ private:
OT_TOOL_PACKED_BEGIN
struct Header
{
uint8_t mVersionTypeToken; ///< The CoAP Version, Type, and Token Length
uint8_t mCode; ///< The CoAP Code
uint16_t mMessageId; ///< The CoAP Message ID
uint8_t mToken[OT_COAP_MAX_TOKEN_LENGTH]; ///< The CoAP Token
uint8_t mVersionTypeToken; ///< The CoAP Version, Type, and Token Length
uint8_t mCode; ///< The CoAP Code
uint16_t mMessageId; ///< The CoAP Message ID
uint8_t mToken[kMaxTokenLength]; ///< The CoAP Token
} OT_TOOL_PACKED_END;
/**
@@ -645,6 +850,14 @@ private:
}
HelpData &GetHelpData(void) { return const_cast<HelpData &>(static_cast<const Message *>(this)->GetHelpData()); }
uint8_t *GetToken(void) { return GetHelpData().mHeader.mToken; }
void SetTokenLength(uint8_t aTokenLength)
{
GetHelpData().mHeader.mVersionTypeToken &= ~kTokenLengthMask;
GetHelpData().mHeader.mVersionTypeToken |= ((aTokenLength << kTokenLengthOffset) & kTokenLengthMask);
}
};
/**
+2 -4
View File
@@ -42,7 +42,7 @@
#include "meshcop/meshcop.hpp"
#include "meshcop/meshcop_tlvs.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
#if OPENTHREAD_CONFIG_COMMISSIONER_ENABLE && OPENTHREAD_FTD
@@ -66,9 +66,7 @@ otError AnnounceBeginClient::SendRequest(uint32_t aChannelMask,
VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = OT_ERROR_INVALID_STATE);
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error =
message->Init(aAddress.IsMulticast() ? OT_COAP_TYPE_NON_CONFIRMABLE : OT_COAP_TYPE_CONFIRMABLE,
OT_COAP_CODE_POST, OT_URI_PATH_ANNOUNCE_BEGIN));
SuccessOrExit(error = message->InitAsPost(aAddress, UriPath::kAnnounceBegin));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::AppendUint16Tlv(*message, MeshCoP::Tlv::kCommissionerSessionId,
+41 -39
View File
@@ -42,7 +42,7 @@
#include "meshcop/meshcop_tlvs.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
#if OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE
@@ -67,7 +67,7 @@ public:
, mPetition(aPetition)
, mSeparate(aSeparate)
, mTokenLength(aMessage.GetTokenLength())
, mType(aMessage.GetType() >> Coap::Message::kTypeOffset)
, mType(aMessage.GetType())
{
memcpy(mToken, aMessage.GetToken(), mTokenLength);
}
@@ -107,15 +107,15 @@ public:
* @retval OT_ERROR_NO_BUFS Insufficient message buffers available to generate the response header.
*
*/
otError ToHeader(Coap::Message &aMessage, Coap::Message::Code aCode)
otError ToHeader(Coap::Message &aMessage, uint8_t aCode)
{
if (mType == (OT_COAP_TYPE_NON_CONFIRMABLE >> Coap::Message::kTypeOffset) || mSeparate)
if ((mType == Coap::kTypeNonConfirmable) || mSeparate)
{
aMessage.Init(OT_COAP_TYPE_NON_CONFIRMABLE, aCode);
aMessage.Init(Coap::kTypeNonConfirmable, static_cast<Coap::Code>(aCode));
}
else
{
aMessage.Init(OT_COAP_TYPE_ACKNOWLEDGMENT, aCode);
aMessage.Init(Coap::kTypeAck, static_cast<Coap::Code>(aCode));
}
if (!mSeparate)
@@ -129,8 +129,9 @@ public:
private:
enum
{
kMaxTokenLength = OT_COAP_MAX_TOKEN_LENGTH, ///< The max token size
kMaxTokenLength = Coap::Message::kMaxTokenLength, ///< The max token size
};
BorderAgent &mBorderAgent;
uint16_t mMessageId; ///< The CoAP Message ID of the original request.
bool mPetition : 1; ///< Whether the forwarding request is leader petition.
@@ -147,15 +148,16 @@ static Coap::Message::Code CoapCodeFromError(otError aError)
switch (aError)
{
case OT_ERROR_NONE:
code = OT_COAP_CODE_CHANGED;
code = Coap::kCodeChanged;
break;
case OT_ERROR_PARSE:
code = OT_COAP_CODE_BAD_REQUEST;
code = Coap::kCodeBadRequest;
;
break;
default:
code = OT_COAP_CODE_INTERNAL_ERROR;
code = Coap::kCodeInternalError;
break;
}
@@ -195,11 +197,11 @@ static void SendErrorMessage(Coap::CoapSecure & aCoapSecure,
if (aRequest.IsNonConfirmable() || aSeparate)
{
message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, CoapCodeFromError(aError));
message->Init(Coap::kTypeNonConfirmable, CoapCodeFromError(aError));
}
else
{
message->Init(OT_COAP_TYPE_ACKNOWLEDGMENT, CoapCodeFromError(aError));
message->Init(Coap::kTypeAck, CoapCodeFromError(aError));
}
if (!aSeparate)
@@ -240,7 +242,7 @@ void BorderAgent::HandleCoapResponse(void * aContext,
SuccessOrExit(error = aResult);
VerifyOrExit((message = NewMeshCoPMessage(instance.Get<Coap::CoapSecure>())) != nullptr, error = OT_ERROR_NO_BUFS);
if (forwardContext.IsPetition() && response->GetCode() == OT_COAP_CODE_CHANGED)
if (forwardContext.IsPetition() && response->GetCode() == Coap::kCodeChanged)
{
uint8_t state;
@@ -292,7 +294,7 @@ void BorderAgent::HandleRequest<&BorderAgent::mCommissionerPetition>(void *
{
IgnoreError(static_cast<BorderAgent *>(aContext)->ForwardToLeader(
*static_cast<Coap::Message *>(aMessage), *static_cast<const Ip6::MessageInfo *>(aMessageInfo),
OT_URI_PATH_LEADER_PETITION, true, true));
UriPath::kLeaderPetition, true, true));
}
template <>
@@ -333,21 +335,21 @@ void BorderAgent::HandleRequest<&BorderAgent::mProxyTransmit>(void *
BorderAgent::BorderAgent(Instance &aInstance)
: InstanceLocator(aInstance)
, mCommissionerPetition(OT_URI_PATH_COMMISSIONER_PETITION,
, mCommissionerPetition(UriPath::kCommissionerPetition,
BorderAgent::HandleRequest<&BorderAgent::mCommissionerPetition>,
this)
, mCommissionerKeepAlive(OT_URI_PATH_COMMISSIONER_KEEP_ALIVE,
, mCommissionerKeepAlive(UriPath::kCommissionerKeepAlive,
BorderAgent::HandleRequest<&BorderAgent::mCommissionerKeepAlive>,
this)
, mRelayTransmit(OT_URI_PATH_RELAY_TX, BorderAgent::HandleRequest<&BorderAgent::mRelayTransmit>, this)
, mRelayReceive(OT_URI_PATH_RELAY_RX, BorderAgent::HandleRequest<&BorderAgent::mRelayReceive>, this)
, mCommissionerGet(OT_URI_PATH_COMMISSIONER_GET, BorderAgent::HandleRequest<&BorderAgent::mCommissionerGet>, this)
, mCommissionerSet(OT_URI_PATH_COMMISSIONER_SET, BorderAgent::HandleRequest<&BorderAgent::mCommissionerSet>, this)
, mActiveGet(OT_URI_PATH_ACTIVE_GET, BorderAgent::HandleRequest<&BorderAgent::mActiveGet>, this)
, mActiveSet(OT_URI_PATH_ACTIVE_SET, BorderAgent::HandleRequest<&BorderAgent::mActiveSet>, this)
, mPendingGet(OT_URI_PATH_PENDING_GET, BorderAgent::HandleRequest<&BorderAgent::mPendingGet>, this)
, mPendingSet(OT_URI_PATH_PENDING_SET, BorderAgent::HandleRequest<&BorderAgent::mPendingSet>, this)
, mProxyTransmit(OT_URI_PATH_PROXY_TX, BorderAgent::HandleRequest<&BorderAgent::mProxyTransmit>, this)
, mRelayTransmit(UriPath::kRelayTx, BorderAgent::HandleRequest<&BorderAgent::mRelayTransmit>, this)
, mRelayReceive(UriPath::kRelayRx, BorderAgent::HandleRequest<&BorderAgent::mRelayReceive>, this)
, mCommissionerGet(UriPath::kCommissionerGet, BorderAgent::HandleRequest<&BorderAgent::mCommissionerGet>, this)
, mCommissionerSet(UriPath::kCommissionerSet, BorderAgent::HandleRequest<&BorderAgent::mCommissionerSet>, this)
, mActiveGet(UriPath::kActiveGet, BorderAgent::HandleRequest<&BorderAgent::mActiveGet>, this)
, mActiveSet(UriPath::kActiveSet, BorderAgent::HandleRequest<&BorderAgent::mActiveSet>, this)
, mPendingGet(UriPath::kPendingGet, BorderAgent::HandleRequest<&BorderAgent::mPendingGet>, this)
, mPendingSet(UriPath::kPendingSet, BorderAgent::HandleRequest<&BorderAgent::mPendingSet>, this)
, mProxyTransmit(UriPath::kProxyTx, BorderAgent::HandleRequest<&BorderAgent::mProxyTransmit>, this)
, mUdpReceiver(BorderAgent::HandleUdpReceive, this)
, mTimer(aInstance, HandleTimeout, this)
, mState(OT_BORDER_AGENT_STATE_STOPPED)
@@ -428,8 +430,8 @@ bool BorderAgent::HandleUdpReceive(const Message &aMessage, const Ip6::MessageIn
VerifyOrExit((message = NewMeshCoPMessage(Get<Coap::CoapSecure>())) != nullptr, error = OT_ERROR_NO_BUFS);
message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST);
SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_PROXY_RX));
message->InitAsNonConfirmablePost();
SuccessOrExit(error = message->AppendUriPathOptions(UriPath::kProxyRx));
SuccessOrExit(error = message->SetPayloadMarker());
{
@@ -453,12 +455,12 @@ bool BorderAgent::HandleUdpReceive(const Message &aMessage, const Ip6::MessageIn
SuccessOrExit(error = Get<Coap::CoapSecure>().SendMessage(*message, Get<Coap::CoapSecure>().GetMessageInfo()));
otLogInfoMeshCoP("Sent to commissioner on %s", OT_URI_PATH_PROXY_RX);
otLogInfoMeshCoP("Sent to commissioner on %s", UriPath::kProxyRx);
exit:
if (message != nullptr && error != OT_ERROR_NONE)
{
otLogWarnMeshCoP("Failed notify commissioner on %s", OT_URI_PATH_PROXY_RX);
otLogWarnMeshCoP("Failed notify commissioner on %s", UriPath::kProxyRx);
message->Free();
}
@@ -470,11 +472,11 @@ void BorderAgent::HandleRelayReceive(const Coap::Message &aMessage)
Coap::Message *message = nullptr;
otError error;
VerifyOrExit(aMessage.IsNonConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, error = OT_ERROR_DROP);
VerifyOrExit(aMessage.IsNonConfirmablePostRequest(), error = OT_ERROR_DROP);
VerifyOrExit((message = NewMeshCoPMessage(Get<Coap::CoapSecure>())) != nullptr, error = OT_ERROR_NO_BUFS);
message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST);
SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_RELAY_RX));
message->InitAsNonConfirmablePost();
SuccessOrExit(error = message->AppendUriPathOptions(UriPath::kRelayRx));
if (aMessage.GetLength() > aMessage.GetOffset())
{
@@ -482,7 +484,7 @@ void BorderAgent::HandleRelayReceive(const Coap::Message &aMessage)
}
SuccessOrExit(error = ForwardToCommissioner(*message, aMessage));
otLogInfoMeshCoP("Sent to commissioner on %s", OT_URI_PATH_RELAY_RX);
otLogInfoMeshCoP("Sent to commissioner on %s", UriPath::kRelayRx);
exit:
if (error != OT_ERROR_NONE && message != nullptr)
@@ -518,7 +520,7 @@ void BorderAgent::HandleKeepAlive(const Coap::Message &aMessage, const Ip6::Mess
{
otError error;
error = ForwardToLeader(aMessage, aMessageInfo, OT_URI_PATH_LEADER_KEEP_ALIVE, false, true);
error = ForwardToLeader(aMessage, aMessageInfo, UriPath::kLeaderKeepAlive, false, true);
if (error == OT_ERROR_NONE)
{
@@ -534,13 +536,13 @@ void BorderAgent::HandleRelayTransmit(const Coap::Message &aMessage)
Ip6::MessageInfo messageInfo;
uint16_t offset = 0;
VerifyOrExit(aMessage.IsNonConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsNonConfirmablePostRequest(), OT_NOOP);
SuccessOrExit(error = Tlv::FindUint16Tlv(aMessage, Tlv::kJoinerRouterLocator, joinerRouterRloc));
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_RELAY_TX));
SuccessOrExit(error = message->InitAsNonConfirmablePost(UriPath::kRelayTx));
SuccessOrExit(error = message->SetPayloadMarker());
offset = message->GetLength();
@@ -555,12 +557,12 @@ void BorderAgent::HandleRelayTransmit(const Coap::Message &aMessage)
SuccessOrExit(error = Get<Tmf::TmfAgent>().SendMessage(*message, messageInfo));
otLogInfoMeshCoP("Sent to joiner router request on %s", OT_URI_PATH_RELAY_TX);
otLogInfoMeshCoP("Sent to joiner router request on %s", UriPath::kRelayTx);
exit:
if (error != OT_ERROR_NONE)
{
otLogWarnMeshCoP("Failed to sent to joiner router request " OT_URI_PATH_RELAY_TX " %s",
otLogWarnMeshCoP("Failed to sent to joiner router request %s: %s", UriPath::kRelayTx,
otThreadErrorToString(error));
if (message != nullptr)
{
@@ -593,7 +595,7 @@ otError BorderAgent::ForwardToLeader(const Coap::Message & aMessage,
forwardContext = new (forwardContext) ForwardContext(*this, aMessage, aPetition, aSeparate);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, aPath));
SuccessOrExit(error = message->InitAsConfirmablePost(aPath));
// Payload of c/cg may be empty
if (aMessage.GetLength() - aMessage.GetOffset() > 0)
+16 -16
View File
@@ -48,7 +48,7 @@
#include "meshcop/meshcop_tlvs.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_COMMISSIONER_ENABLE
@@ -64,9 +64,9 @@ Commissioner::Commissioner(Instance &aInstance)
, mTransmitAttempts(0)
, mJoinerExpirationTimer(aInstance, HandleJoinerExpirationTimer, this)
, mTimer(aInstance, HandleTimer, this)
, mRelayReceive(OT_URI_PATH_RELAY_RX, &Commissioner::HandleRelayReceive, this)
, mDatasetChanged(OT_URI_PATH_DATASET_CHANGED, &Commissioner::HandleDatasetChanged, this)
, mJoinerFinalize(OT_URI_PATH_JOINER_FINALIZE, &Commissioner::HandleJoinerFinalize, this)
, mRelayReceive(UriPath::kRelayRx, &Commissioner::HandleRelayReceive, this)
, mDatasetChanged(UriPath::kDatasetChanged, &Commissioner::HandleDatasetChanged, this)
, mJoinerFinalize(UriPath::kJoinerFinalize, &Commissioner::HandleJoinerFinalize, this)
, mAnnounceBegin(aInstance)
, mEnergyScan(aInstance)
, mPanIdQuery(aInstance)
@@ -698,7 +698,7 @@ otError Commissioner::SendMgmtCommissionerGetRequest(const uint8_t *aTlvs, uint8
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_COMMISSIONER_GET));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kCommissionerGet));
if (aLength > 0)
{
@@ -746,7 +746,7 @@ void Commissioner::HandleMgmtCommissionerGetResponse(Coap::Message * aMe
{
OT_UNUSED_VARIABLE(aMessageInfo);
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage->GetCode() == OT_COAP_CODE_CHANGED, OT_NOOP);
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage->GetCode() == Coap::kCodeChanged, OT_NOOP);
otLogInfoMeshCoP("received MGMT_COMMISSIONER_GET response");
exit:
@@ -763,7 +763,7 @@ otError Commissioner::SendMgmtCommissionerSetRequest(const otCommissioningDatase
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_COMMISSIONER_SET));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kCommissionerSet));
SuccessOrExit(error = message->SetPayloadMarker());
if (aDataset.mIsLocatorSet)
@@ -832,7 +832,7 @@ void Commissioner::HandleMgmtCommissionerSetResponse(Coap::Message * aMe
{
OT_UNUSED_VARIABLE(aMessageInfo);
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage->GetCode() == OT_COAP_CODE_CHANGED, OT_NOOP);
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage->GetCode() == Coap::kCodeChanged, OT_NOOP);
otLogInfoMeshCoP("received MGMT_COMMISSIONER_SET response");
exit:
@@ -850,7 +850,7 @@ otError Commissioner::SendPetition(void)
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_LEADER_PETITION));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kLeaderPetition));
SuccessOrExit(error = message->SetPayloadMarker());
commissionerId.Init();
@@ -895,7 +895,7 @@ void Commissioner::HandleLeaderPetitionResponse(Coap::Message * aMessage
bool retransmit = false;
VerifyOrExit(mState != OT_COMMISSIONER_STATE_ACTIVE, OT_NOOP);
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage->GetCode() == OT_COAP_CODE_CHANGED,
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage->GetCode() == Coap::kCodeChanged,
retransmit = (mState == OT_COMMISSIONER_STATE_PETITION));
otLogInfoMeshCoP("received Leader Petition response");
@@ -950,7 +950,7 @@ void Commissioner::SendKeepAlive(uint16_t aSessionId)
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_LEADER_KEEP_ALIVE));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kLeaderKeepAlive));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(
@@ -998,7 +998,7 @@ void Commissioner::HandleLeaderKeepAliveResponse(Coap::Message * aMessag
uint8_t state;
VerifyOrExit(mState == OT_COMMISSIONER_STATE_ACTIVE, OT_NOOP);
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage->GetCode() == OT_COAP_CODE_CHANGED,
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage->GetCode() == Coap::kCodeChanged,
IgnoreError(Stop(/* aResign */ false)));
otLogInfoMeshCoP("received Leader keep-alive response");
@@ -1032,7 +1032,7 @@ void Commissioner::HandleRelayReceive(Coap::Message &aMessage, const Ip6::Messag
VerifyOrExit(mState == OT_COMMISSIONER_STATE_ACTIVE, error = OT_ERROR_INVALID_STATE);
VerifyOrExit(aMessage.IsNonConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsNonConfirmablePostRequest(), OT_NOOP);
SuccessOrExit(error = Tlv::FindUint16Tlv(aMessage, Tlv::kJoinerUdpPort, joinerPort));
SuccessOrExit(error = Tlv::FindTlv(aMessage, Tlv::kJoinerIid, &joinerIid, sizeof(joinerIid)));
@@ -1089,7 +1089,7 @@ void Commissioner::HandleDatasetChanged(void *aContext, otMessage *aMessage, con
void Commissioner::HandleDatasetChanged(Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo)
{
VerifyOrExit(aMessage.IsConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsConfirmablePostRequest(), OT_NOOP);
otLogInfoMeshCoP("received dataset changed");
@@ -1205,8 +1205,8 @@ otError Commissioner::SendRelayTransmit(Message &aMessage, const Ip6::MessageInf
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST);
SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_RELAY_TX));
message->InitAsNonConfirmablePost();
SuccessOrExit(error = message->AppendUriPathOptions(UriPath::kRelayTx));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::AppendUint16Tlv(*message, Tlv::kJoinerUdpPort, mJoinerPort));
+12 -16
View File
@@ -44,7 +44,7 @@
#include "radio/radio.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
namespace MeshCoP {
@@ -280,7 +280,7 @@ void DatasetManager::SendSet(void)
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, mUriSet));
SuccessOrExit(error = message->InitAsConfirmablePost(mUriSet));
SuccessOrExit(error = message->SetPayloadMarker());
IgnoreError(mLocal.Read(dataset));
@@ -365,7 +365,7 @@ void DatasetManager::HandleGet(const Coap::Message &aMessage, const Ip6::Message
}
// MGMT_PENDING_GET.rsp must include Delay Timer TLV (Thread 1.1.1 Section 8.7.5.4)
VerifyOrExit(length > 0 && strcmp(mUriGet, OT_URI_PATH_PENDING_GET) == 0, OT_NOOP);
VerifyOrExit(length > 0 && strcmp(mUriGet, UriPath::kPendingGet) == 0, OT_NOOP);
for (uint8_t i = 0; i < length; i++)
{
@@ -451,7 +451,7 @@ otError DatasetManager::SendSetRequest(const otOperationalDataset &aDataset, con
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, mUriSet));
SuccessOrExit(error = message->InitAsConfirmablePost(mUriSet));
SuccessOrExit(error = message->SetPayloadMarker());
#if OPENTHREAD_CONFIG_COMMISSIONER_ENABLE && OPENTHREAD_FTD
@@ -669,7 +669,7 @@ otError DatasetManager::SendGetRequest(const otOperationalDatasetComponents &aDa
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, mUriGet));
SuccessOrExit(error = message->InitAsConfirmablePost(mUriGet));
if (aLength + length > 0)
{
@@ -719,14 +719,10 @@ exit:
}
ActiveDataset::ActiveDataset(Instance &aInstance)
: DatasetManager(aInstance,
Dataset::kActive,
OT_URI_PATH_ACTIVE_GET,
OT_URI_PATH_ACTIVE_SET,
ActiveDataset::HandleTimer)
, mResourceGet(OT_URI_PATH_ACTIVE_GET, &ActiveDataset::HandleGet, this)
: DatasetManager(aInstance, Dataset::kActive, UriPath::kActiveGet, UriPath::kActiveSet, ActiveDataset::HandleTimer)
, mResourceGet(UriPath::kActiveGet, &ActiveDataset::HandleGet, this)
#if OPENTHREAD_FTD
, mResourceSet(OT_URI_PATH_ACTIVE_SET, &ActiveDataset::HandleSet, this)
, mResourceSet(UriPath::kActiveSet, &ActiveDataset::HandleSet, this)
#endif
{
Get<Tmf::TmfAgent>().AddResource(mResourceGet);
@@ -769,13 +765,13 @@ void ActiveDataset::HandleTimer(Timer &aTimer)
PendingDataset::PendingDataset(Instance &aInstance)
: DatasetManager(aInstance,
Dataset::kPending,
OT_URI_PATH_PENDING_GET,
OT_URI_PATH_PENDING_SET,
UriPath::kPendingGet,
UriPath::kPendingSet,
PendingDataset::HandleTimer)
, mDelayTimer(aInstance, PendingDataset::HandleDelayTimer, this)
, mResourceGet(OT_URI_PATH_PENDING_GET, &PendingDataset::HandleGet, this)
, mResourceGet(UriPath::kPendingGet, &PendingDataset::HandleGet, this)
#if OPENTHREAD_FTD
, mResourceSet(OT_URI_PATH_PENDING_SET, &PendingDataset::HandleSet, this)
, mResourceSet(UriPath::kPendingSet, &PendingDataset::HandleSet, this)
#endif
{
Get<Tmf::TmfAgent>().AddResource(mResourceGet);
+2 -2
View File
@@ -52,7 +52,7 @@
#include "meshcop/meshcop_tlvs.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
namespace MeshCoP {
@@ -105,7 +105,7 @@ otError DatasetManager::HandleSet(Coap::Message &aMessage, const Ip6::MessageInf
// verify that does not overflow dataset buffer
VerifyOrExit((offset - aMessage.GetOffset()) <= Dataset::kMaxSize, OT_NOOP);
type = (strcmp(mUriSet, OT_URI_PATH_ACTIVE_SET) == 0 ? Tlv::kActiveTimestamp : Tlv::kPendingTimestamp);
type = (strcmp(mUriSet, UriPath::kActiveSet) == 0 ? Tlv::kActiveTimestamp : Tlv::kPendingTimestamp);
if (Tlv::FindTlv(aMessage, Tlv::kActiveTimestamp, sizeof(activeTimestamp), activeTimestamp) != OT_ERROR_NONE)
{
+4 -6
View File
@@ -43,7 +43,7 @@
#include "meshcop/meshcop.hpp"
#include "meshcop/meshcop_tlvs.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
#if OPENTHREAD_CONFIG_COMMISSIONER_ENABLE && OPENTHREAD_FTD
@@ -53,7 +53,7 @@ EnergyScanClient::EnergyScanClient(Instance &aInstance)
: InstanceLocator(aInstance)
, mCallback(nullptr)
, mContext(nullptr)
, mEnergyScan(OT_URI_PATH_ENERGY_REPORT, &EnergyScanClient::HandleReport, this)
, mEnergyScan(UriPath::kEnergyReport, &EnergyScanClient::HandleReport, this)
{
Get<Tmf::TmfAgent>().AddResource(mEnergyScan);
}
@@ -74,9 +74,7 @@ otError EnergyScanClient::SendQuery(uint32_t aChannelM
VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = OT_ERROR_INVALID_STATE);
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error =
message->Init(aAddress.IsMulticast() ? OT_COAP_TYPE_NON_CONFIRMABLE : OT_COAP_TYPE_CONFIRMABLE,
OT_COAP_CODE_POST, OT_URI_PATH_ENERGY_SCAN));
SuccessOrExit(error = message->InitAsPost(aAddress, UriPath::kEnergyScan));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::AppendUint16Tlv(*message, MeshCoP::Tlv::kCommissionerSessionId,
@@ -127,7 +125,7 @@ void EnergyScanClient::HandleReport(Coap::Message &aMessage, const Ip6::MessageI
uint8_t list[OPENTHREAD_CONFIG_TMF_ENERGY_SCAN_MAX_RESULTS];
} OT_TOOL_PACKED_END energyList;
VerifyOrExit(aMessage.IsConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsConfirmablePostRequest(), OT_NOOP);
otLogInfoMeshCoP("received energy scan report");
+6 -8
View File
@@ -45,7 +45,7 @@
#include "meshcop/meshcop.hpp"
#include "radio/radio.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
#include "utils/otns.hpp"
#if OPENTHREAD_CONFIG_JOINER_ENABLE
@@ -65,7 +65,7 @@ Joiner::Joiner(Instance &aInstance)
, mJoinerRouterIndex(0)
, mFinalizeMessage(nullptr)
, mTimer(aInstance, Joiner::HandleTimer, this)
, mJoinerEntrust(OT_URI_PATH_JOINER_ENTRUST, &Joiner::HandleJoinerEntrust, this)
, mJoinerEntrust(UriPath::kJoinerEntrust, &Joiner::HandleJoinerEntrust, this)
{
SetIdFromIeeeEui64();
mDiscerner.Clear();
@@ -443,8 +443,8 @@ otError Joiner::PrepareJoinerFinalizeMessage(const char *aProvisioningUrl,
VerifyOrExit((mFinalizeMessage = NewMeshCoPMessage(Get<Coap::CoapSecure>())) != nullptr, error = OT_ERROR_NO_BUFS);
mFinalizeMessage->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST);
SuccessOrExit(error = mFinalizeMessage->AppendUriPathOptions(OT_URI_PATH_JOINER_FINALIZE));
mFinalizeMessage->InitAsConfirmablePost();
SuccessOrExit(error = mFinalizeMessage->AppendUriPathOptions(UriPath::kJoinerFinalize));
SuccessOrExit(error = mFinalizeMessage->SetPayloadMarker());
mFinalizeMessage->SetOffset(mFinalizeMessage->GetLength());
@@ -540,7 +540,7 @@ void Joiner::HandleJoinerFinalizeResponse(Coap::Message & aMessage,
uint8_t state;
VerifyOrExit(mState == OT_JOINER_STATE_CONNECTED && aResult == OT_ERROR_NONE && aMessage.IsAck() &&
aMessage.GetCode() == OT_COAP_CODE_CHANGED,
aMessage.GetCode() == Coap::kCodeChanged,
OT_NOOP);
SuccessOrExit(Tlv::FindUint8Tlv(aMessage, Tlv::kState, state));
@@ -570,9 +570,7 @@ void Joiner::HandleJoinerEntrust(Coap::Message &aMessage, const Ip6::MessageInfo
otError error;
otOperationalDataset dataset;
VerifyOrExit(mState == OT_JOINER_STATE_ENTRUST && aMessage.IsConfirmable() &&
aMessage.GetCode() == OT_COAP_CODE_POST,
error = OT_ERROR_DROP);
VerifyOrExit(mState == OT_JOINER_STATE_ENTRUST && aMessage.IsConfirmablePostRequest(), error = OT_ERROR_DROP);
otLogInfoMeshCoP("Joiner received entrust");
otLogCertMeshCoP("[THCI] direction=recv | type=JOIN_ENT.ntf");
+7 -7
View File
@@ -46,7 +46,7 @@
#include "meshcop/meshcop_tlvs.hpp"
#include "thread/mle.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
using ot::Encoding::BigEndian::HostSwap16;
@@ -56,7 +56,7 @@ namespace MeshCoP {
JoinerRouter::JoinerRouter(Instance &aInstance)
: InstanceLocator(aInstance)
, mSocket(aInstance)
, mRelayTransmit(OT_URI_PATH_RELAY_TX, &JoinerRouter::HandleRelayTransmit, this)
, mRelayTransmit(UriPath::kRelayTx, &JoinerRouter::HandleRelayTransmit, this)
, mTimer(aInstance, JoinerRouter::HandleTimer, this)
, mJoinerUdpPort(0)
, mIsJoinerPortConfigured(false)
@@ -145,7 +145,7 @@ void JoinerRouter::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &a
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_RELAY_RX));
SuccessOrExit(error = message->InitAsNonConfirmablePost(UriPath::kRelayRx));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::AppendUint16Tlv(*message, Tlv::kJoinerUdpPort, aMessageInfo.GetPeerPort()));
@@ -197,7 +197,7 @@ void JoinerRouter::HandleRelayTransmit(Coap::Message &aMessage, const Ip6::Messa
Message::Settings settings(Message::kNoLinkSecurity, Message::kPriorityNet);
Ip6::MessageInfo messageInfo;
VerifyOrExit(aMessage.IsNonConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, error = OT_ERROR_DROP);
VerifyOrExit(aMessage.IsNonConfirmablePostRequest(), error = OT_ERROR_DROP);
otLogInfoMeshCoP("Received relay transmit");
@@ -343,8 +343,8 @@ Coap::Message *JoinerRouter::PrepareJoinerEntrustMessage(void)
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST);
SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_JOINER_ENTRUST));
message->InitAsConfirmablePost();
SuccessOrExit(error = message->AppendUriPathOptions(UriPath::kJoinerEntrust));
SuccessOrExit(error = message->SetPayloadMarker());
message->SetSubType(Message::kSubTypeJoinerEntrust);
@@ -440,7 +440,7 @@ void JoinerRouter::HandleJoinerEntrustResponse(Coap::Message * aMessage,
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage != nullptr, OT_NOOP);
VerifyOrExit(aMessage->GetCode() == OT_COAP_CODE_CHANGED, OT_NOOP);
VerifyOrExit(aMessage->GetCode() == Coap::kCodeChanged, OT_NOOP);
otLogInfoMeshCoP("Receive joiner entrust response");
otLogCertMeshCoP("[THCI] direction=recv | type=JOIN_ENT.rsp");
+4 -4
View File
@@ -47,15 +47,15 @@
#include "meshcop/meshcop_tlvs.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
namespace MeshCoP {
Leader::Leader(Instance &aInstance)
: InstanceLocator(aInstance)
, mPetition(OT_URI_PATH_LEADER_PETITION, Leader::HandlePetition, this)
, mKeepAlive(OT_URI_PATH_LEADER_KEEP_ALIVE, Leader::HandleKeepAlive, this)
, mPetition(UriPath::kLeaderPetition, Leader::HandlePetition, this)
, mKeepAlive(UriPath::kLeaderKeepAlive, Leader::HandleKeepAlive, this)
, mTimer(aInstance, HandleTimer, this)
, mDelayTimerMinimal(DelayTimerTlv::kDelayTimerMinimal)
, mSessionId(Random::NonCrypto::GetUint16())
@@ -251,7 +251,7 @@ void Leader::SendDatasetChanged(const Ip6::Address &aAddress)
VerifyOrExit((message = NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DATASET_CHANGED));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kDatasetChanged));
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
messageInfo.SetPeerAddr(aAddress);
+4 -6
View File
@@ -42,7 +42,7 @@
#include "meshcop/meshcop.hpp"
#include "meshcop/meshcop_tlvs.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
#if OPENTHREAD_CONFIG_COMMISSIONER_ENABLE && OPENTHREAD_FTD
@@ -52,7 +52,7 @@ PanIdQueryClient::PanIdQueryClient(Instance &aInstance)
: InstanceLocator(aInstance)
, mCallback(nullptr)
, mContext(nullptr)
, mPanIdQuery(OT_URI_PATH_PANID_CONFLICT, &PanIdQueryClient::HandleConflict, this)
, mPanIdQuery(UriPath::kPanIdConflict, &PanIdQueryClient::HandleConflict, this)
{
Get<Tmf::TmfAgent>().AddResource(mPanIdQuery);
}
@@ -71,9 +71,7 @@ otError PanIdQueryClient::SendQuery(uint16_t aPanId,
VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = OT_ERROR_INVALID_STATE);
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error =
message->Init(aAddress.IsMulticast() ? OT_COAP_TYPE_NON_CONFIRMABLE : OT_COAP_TYPE_CONFIRMABLE,
OT_COAP_CODE_POST, OT_URI_PATH_PANID_QUERY));
SuccessOrExit(error = message->InitAsPost(aAddress, UriPath::kPanIdQuery));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::AppendUint16Tlv(*message, MeshCoP::Tlv::kCommissionerSessionId,
@@ -117,7 +115,7 @@ void PanIdQueryClient::HandleConflict(Coap::Message &aMessage, const Ip6::Messag
Ip6::MessageInfo responseInfo(aMessageInfo);
uint32_t mask;
VerifyOrExit(aMessage.IsConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsConfirmablePostRequest(), OT_NOOP);
otLogInfoMeshCoP("received panid conflict");
+13 -13
View File
@@ -47,7 +47,7 @@
#include "thread/mesh_forwarder.hpp"
#include "thread/mle_router.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
using ot::Encoding::BigEndian::HostSwap16;
@@ -55,9 +55,9 @@ namespace ot {
AddressResolver::AddressResolver(Instance &aInstance)
: InstanceLocator(aInstance)
, mAddressError(OT_URI_PATH_ADDRESS_ERROR, &AddressResolver::HandleAddressError, this)
, mAddressQuery(OT_URI_PATH_ADDRESS_QUERY, &AddressResolver::HandleAddressQuery, this)
, mAddressNotification(OT_URI_PATH_ADDRESS_NOTIFY, &AddressResolver::HandleAddressNotification, this)
, mAddressError(UriPath::kAddressError, &AddressResolver::HandleAddressError, this)
, mAddressQuery(UriPath::kAddressQuery, &AddressResolver::HandleAddressQuery, this)
, mAddressNotification(UriPath::kAddressNotify, &AddressResolver::HandleAddressNotification, this)
, mCacheEntryPool(aInstance)
, mCachedList()
, mSnoopedList()
@@ -525,8 +525,8 @@ otError AddressResolver::SendAddressQuery(const Ip6::Address &aEid)
VerifyOrExit((message = Get<Tmf::TmfAgent>().NewPriorityMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST);
SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_QUERY));
message->InitAsNonConfirmablePost();
SuccessOrExit(error = message->AppendUriPathOptions(UriPath::kAddressQuery));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::AppendTlv(*message, ThreadTlv::kTarget, &aEid, sizeof(aEid)));
@@ -568,7 +568,7 @@ void AddressResolver::HandleAddressNotification(Coap::Message &aMessage, const I
CacheEntry * entry;
CacheEntry * prev;
VerifyOrExit(aMessage.IsConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsConfirmablePostRequest(), OT_NOOP);
SuccessOrExit(Tlv::FindTlv(aMessage, ThreadTlv::kTarget, &target, sizeof(target)));
SuccessOrExit(Tlv::FindTlv(aMessage, ThreadTlv::kMeshLocalEid, &meshLocalIid, sizeof(meshLocalIid)));
@@ -636,8 +636,8 @@ void AddressResolver::SendAddressError(const Ip6::Address & aTarget,
VerifyOrExit((message = Get<Tmf::TmfAgent>().NewMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
message->Init(aDestination == nullptr ? OT_COAP_TYPE_NON_CONFIRMABLE : OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST);
SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_ERROR));
message->Init(aDestination == nullptr ? Coap::kTypeNonConfirmable : Coap::kTypeConfirmable, Coap::kCodePost);
SuccessOrExit(error = message->AppendUriPathOptions(UriPath::kAddressError));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::AppendTlv(*message, ThreadTlv::kTarget, &aTarget, sizeof(aTarget)));
@@ -686,7 +686,7 @@ void AddressResolver::HandleAddressError(Coap::Message &aMessage, const Ip6::Mes
Mac::ExtAddress extAddr;
Ip6::Address destination;
VerifyOrExit(aMessage.GetCode() == OT_COAP_CODE_POST, error = OT_ERROR_DROP);
VerifyOrExit(aMessage.IsPostRequest(), error = OT_ERROR_DROP);
otLogInfoArp("Received address error notification");
@@ -755,7 +755,7 @@ void AddressResolver::HandleAddressQuery(Coap::Message &aMessage, const Ip6::Mes
Ip6::Address target;
uint32_t lastTransactionTime;
VerifyOrExit(aMessage.IsNonConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsNonConfirmablePostRequest(), OT_NOOP);
SuccessOrExit(Tlv::FindTlv(aMessage, ThreadTlv::kTarget, &target, sizeof(target)));
@@ -799,8 +799,8 @@ void AddressResolver::SendAddressQueryResponse(const Ip6::Address & a
VerifyOrExit((message = Get<Tmf::TmfAgent>().NewPriorityMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST);
SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_NOTIFY));
message->InitAsConfirmablePost();
SuccessOrExit(error = message->AppendUriPathOptions(UriPath::kAddressNotify));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::AppendTlv(*message, ThreadTlv::kTarget, &aTarget, sizeof(aTarget)));
+3 -3
View File
@@ -43,13 +43,13 @@
#include "common/logging.hpp"
#include "meshcop/meshcop_tlvs.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
AnnounceBeginServer::AnnounceBeginServer(Instance &aInstance)
: AnnounceSenderBase(aInstance, AnnounceBeginServer::HandleTimer)
, mAnnounceBegin(OT_URI_PATH_ANNOUNCE_BEGIN, &AnnounceBeginServer::HandleRequest, this)
, mAnnounceBegin(UriPath::kAnnounceBegin, &AnnounceBeginServer::HandleRequest, this)
{
Get<Tmf::TmfAgent>().AddResource(mAnnounceBegin);
}
@@ -72,7 +72,7 @@ void AnnounceBeginServer::HandleRequest(Coap::Message &aMessage, const Ip6::Mess
uint16_t period;
Ip6::MessageInfo responseInfo(aMessageInfo);
VerifyOrExit(aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsPostRequest(), OT_NOOP);
VerifyOrExit((mask = MeshCoP::ChannelMaskTlv::GetChannelMask(aMessage)) != 0, OT_NOOP);
SuccessOrExit(Tlv::FindUint8Tlv(aMessage, MeshCoP::Tlv::kCount, count));
+6 -8
View File
@@ -44,7 +44,7 @@
#include "thread/mle_types.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
#include "utils/slaac_address.hpp"
namespace ot {
@@ -52,7 +52,7 @@ namespace ot {
DuaManager::DuaManager(Instance &aInstance)
: InstanceLocator(aInstance)
, mRegistrationTask(aInstance, DuaManager::HandleRegistrationTask, this)
, mDuaNotification(OT_URI_PATH_DUA_REGISTRATION_NOTIFY, &DuaManager::HandleDuaNotification, this)
, mDuaNotification(UriPath::kDuaRegistrationNotify, &DuaManager::HandleDuaNotification, this)
, mIsDuaPending(false)
#if OPENTHREAD_CONFIG_DUA_ENABLE
, mDuaState(kNotExist)
@@ -424,8 +424,7 @@ void DuaManager::PerformNextRegistration(void)
// Prepare DUA.req
VerifyOrExit((message = Get<Tmf::TmfAgent>().NewPriorityMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error =
message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DUA_REGISTRATION_REQUEST));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kDuaRegistrationRequest));
SuccessOrExit(error = message->SetPayloadMarker());
#if OPENTHREAD_CONFIG_DUA_ENABLE
@@ -529,7 +528,7 @@ void DuaManager::HandleDuaResponse(Coap::Message &aMessage, const Ip6::MessageIn
ExitNow(error = aResult);
}
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage.GetCode() == OT_COAP_CODE_CHANGED, error = OT_ERROR_PARSE);
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage.GetCode() == Coap::kCodeChanged, error = OT_ERROR_PARSE);
error = ProcessDuaResponse(aMessage);
@@ -549,7 +548,7 @@ void DuaManager::HandleDuaNotification(Coap::Message &aMessage, const Ip6::Messa
OT_UNUSED_VARIABLE(error);
VerifyOrExit(aMessage.GetCode() == OT_COAP_CODE_POST, error = OT_ERROR_PARSE);
VerifyOrExit(aMessage.IsPostRequest(), error = OT_ERROR_PARSE);
if (aMessage.IsConfirmable() && Get<Tmf::TmfAgent>().SendEmptyAck(aMessage, aMessageInfo) == OT_ERROR_NONE)
{
@@ -658,8 +657,7 @@ void DuaManager::SendAddressNotification(Ip6::Address & aAddress,
VerifyOrExit((message = Get<Tmf::TmfAgent>().NewPriorityMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error =
message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DUA_REGISTRATION_NOTIFY));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kDuaRegistrationNotify));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::AppendUint8Tlv(*message, ThreadTlv::kStatus, static_cast<uint8_t>(aStatus)));
+4 -4
View File
@@ -42,7 +42,7 @@
#include "meshcop/meshcop.hpp"
#include "meshcop/meshcop_tlvs.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
@@ -56,7 +56,7 @@ EnergyScanServer::EnergyScanServer(Instance &aInstance)
, mActive(false)
, mScanResultsLength(0)
, mTimer(aInstance, EnergyScanServer::HandleTimer, this)
, mEnergyScan(OT_URI_PATH_ENERGY_SCAN, &EnergyScanServer::HandleRequest, this)
, mEnergyScan(UriPath::kEnergyScan, &EnergyScanServer::HandleRequest, this)
{
Get<Tmf::TmfAgent>().AddResource(mEnergyScan);
}
@@ -75,7 +75,7 @@ void EnergyScanServer::HandleRequest(Coap::Message &aMessage, const Ip6::Message
Ip6::MessageInfo responseInfo(aMessageInfo);
uint32_t mask;
VerifyOrExit(aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsPostRequest(), OT_NOOP);
SuccessOrExit(Tlv::FindUint8Tlv(aMessage, MeshCoP::Tlv::kCount, count));
SuccessOrExit(Tlv::FindUint16Tlv(aMessage, MeshCoP::Tlv::kPeriod, period));
@@ -177,7 +177,7 @@ void EnergyScanServer::SendReport(void)
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_ENERGY_REPORT));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kEnergyReport));
SuccessOrExit(error = message->SetPayloadMarker());
channelMask.Init();
+8 -8
View File
@@ -47,8 +47,8 @@
#include "net/icmp6.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/time_sync_service.hpp"
#include "thread/uri_paths.hpp"
#include "utils/otns.hpp"
using ot::Encoding::BigEndian::HostSwap16;
@@ -59,8 +59,8 @@ namespace Mle {
MleRouter::MleRouter(Instance &aInstance)
: Mle(aInstance)
, mAdvertiseTimer(aInstance, MleRouter::HandleAdvertiseTimer, nullptr, this)
, mAddressSolicit(OT_URI_PATH_ADDRESS_SOLICIT, &MleRouter::HandleAddressSolicit, this)
, mAddressRelease(OT_URI_PATH_ADDRESS_RELEASE, &MleRouter::HandleAddressRelease, this)
, mAddressSolicit(UriPath::kAddressSolicit, &MleRouter::HandleAddressSolicit, this)
, mAddressRelease(UriPath::kAddressRelease, &MleRouter::HandleAddressRelease, this)
, mChildTable(aInstance)
, mRouterTable(aInstance)
, mChallengeTimeout(0)
@@ -3580,7 +3580,7 @@ otError MleRouter::SendAddressSolicit(ThreadStatusTlv::Status aStatus)
VerifyOrExit((message = Get<Tmf::TmfAgent>().NewPriorityMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_ADDRESS_SOLICIT));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kAddressSolicit));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::AppendTlv(*message, ThreadTlv::kExtMacAddress, Get<Mac::Mac>().GetExtAddress().m8,
@@ -3626,7 +3626,7 @@ void MleRouter::SendAddressRelease(void)
VerifyOrExit((message = Get<Tmf::TmfAgent>().NewMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_ADDRESS_RELEASE));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kAddressRelease));
SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::AppendUint16Tlv(*message, ThreadTlv::kRloc16, Rloc16FromRouterId(mRouterId)));
@@ -3677,7 +3677,7 @@ void MleRouter::HandleAddressSolicitResponse(Coap::Message * aMessage,
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage != nullptr && aMessage != nullptr, OT_NOOP);
VerifyOrExit(aMessage->GetCode() == OT_COAP_CODE_CHANGED, OT_NOOP);
VerifyOrExit(aMessage->GetCode() == Coap::kCodeChanged, OT_NOOP);
Log("Receive Address Reply", aMessageInfo->GetPeerAddr());
@@ -3776,7 +3776,7 @@ void MleRouter::HandleAddressSolicit(Coap::Message &aMessage, const Ip6::Message
uint16_t xtalAccuracy;
#endif
VerifyOrExit(aMessage.IsConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, error = OT_ERROR_PARSE);
VerifyOrExit(aMessage.IsConfirmablePostRequest(), error = OT_ERROR_PARSE);
Log("Receive Address Solicit", aMessageInfo.GetPeerAddr());
@@ -3905,7 +3905,7 @@ void MleRouter::HandleAddressRelease(Coap::Message &aMessage, const Ip6::Message
uint8_t routerId;
Router * router;
VerifyOrExit(aMessage.IsConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsConfirmablePostRequest(), OT_NOOP);
Log("Receive Address Release", aMessageInfo.GetPeerAddr());
+4 -4
View File
@@ -41,7 +41,7 @@
#include "common/logging.hpp"
#include "net/ip6_address.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
#include "utils/slaac_address.hpp"
namespace ot {
@@ -394,9 +394,9 @@ otError MlrManager::SendMulticastListenerRegistrationMessage(const otIp6Address
VerifyOrExit((message = Get<Tmf::TmfAgent>().NewMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST);
message->InitAsConfirmablePost();
SuccessOrExit(message->SetToken(Coap::Message::kDefaultTokenLength));
SuccessOrExit(message->AppendUriPathOptions(OT_URI_PATH_MLR));
SuccessOrExit(message->AppendUriPathOptions(UriPath::kMlr));
SuccessOrExit(message->SetPayloadMarker());
addressesTlv.Init();
@@ -508,7 +508,7 @@ otError MlrManager::ParseMulticastListenerRegistrationResponse(otError aR
aStatus = ThreadStatusTlv::MlrStatus::kMlrGeneralFailure;
VerifyOrExit(aResult == OT_ERROR_NONE && aMessage != nullptr, error = OT_ERROR_PARSE);
VerifyOrExit(aMessage->GetCode() == OT_COAP_CODE_CHANGED, error = OT_ERROR_PARSE);
VerifyOrExit(aMessage->GetCode() == Coap::kCodeChanged, error = OT_ERROR_PARSE);
SuccessOrExit(error = Tlv::FindUint8Tlv(*aMessage, ThreadTlv::kStatus, aStatus));
+2 -2
View File
@@ -42,7 +42,7 @@
#include "mac/mac_types.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
namespace NetworkData {
@@ -808,7 +808,7 @@ otError NetworkData::SendServerDataNotification(uint16_t aRloc16, Coap::Response
VerifyOrExit((message = Get<Tmf::TmfAgent>().NewMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_SERVER_DATA));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kServerData));
SuccessOrExit(error = message->SetPayloadMarker());
if (mType == kTypeLocal)
+1 -1
View File
@@ -48,7 +48,7 @@
#include "thread/mle_router.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
namespace NetworkData {
+4 -4
View File
@@ -50,7 +50,7 @@
#include "thread/mle_router.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
namespace NetworkData {
@@ -58,9 +58,9 @@ namespace NetworkData {
Leader::Leader(Instance &aInstance)
: LeaderBase(aInstance)
, mTimer(aInstance, Leader::HandleTimer, this)
, mServerData(OT_URI_PATH_SERVER_DATA, &Leader::HandleServerData, this)
, mCommissioningDataGet(OT_URI_PATH_COMMISSIONER_GET, &Leader::HandleCommissioningGet, this)
, mCommissioningDataSet(OT_URI_PATH_COMMISSIONER_SET, &Leader::HandleCommissioningSet, this)
, mServerData(UriPath::kServerData, &Leader::HandleServerData, this)
, mCommissioningDataGet(UriPath::kCommissionerGet, &Leader::HandleCommissioningGet, this)
, mCommissioningDataSet(UriPath::kCommissionerSet, &Leader::HandleCommissioningSet, this)
{
Reset();
}
+14 -17
View File
@@ -46,7 +46,7 @@
#include "thread/mle_router.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
#if OPENTHREAD_FTD || OPENTHREAD_CONFIG_TMF_NETWORK_DIAG_MTD_ENABLE
@@ -56,10 +56,10 @@ namespace NetworkDiagnostic {
NetworkDiagnostic::NetworkDiagnostic(Instance &aInstance)
: InstanceLocator(aInstance)
, mDiagnosticGetRequest(OT_URI_PATH_DIAGNOSTIC_GET_REQUEST, &NetworkDiagnostic::HandleDiagnosticGetRequest, this)
, mDiagnosticGetQuery(OT_URI_PATH_DIAGNOSTIC_GET_QUERY, &NetworkDiagnostic::HandleDiagnosticGetQuery, this)
, mDiagnosticGetAnswer(OT_URI_PATH_DIAGNOSTIC_GET_ANSWER, &NetworkDiagnostic::HandleDiagnosticGetAnswer, this)
, mDiagnosticReset(OT_URI_PATH_DIAGNOSTIC_RESET, &NetworkDiagnostic::HandleDiagnosticReset, this)
, mDiagnosticGetRequest(UriPath::kDiagnosticGetRequest, &NetworkDiagnostic::HandleDiagnosticGetRequest, this)
, mDiagnosticGetQuery(UriPath::kDiagnosticGetQuery, &NetworkDiagnostic::HandleDiagnosticGetQuery, this)
, mDiagnosticGetAnswer(UriPath::kDiagnosticGetAnswer, &NetworkDiagnostic::HandleDiagnosticGetAnswer, this)
, mDiagnosticReset(UriPath::kDiagnosticReset, &NetworkDiagnostic::HandleDiagnosticReset, this)
, mReceiveDiagnosticGetCallback(nullptr)
, mReceiveDiagnosticGetCallbackContext(nullptr)
{
@@ -89,14 +89,12 @@ otError NetworkDiagnostic::SendDiagnosticGet(const Ip6::Address &aDestination,
if (aDestination.IsMulticast())
{
SuccessOrExit(
error = message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DIAGNOSTIC_GET_QUERY));
SuccessOrExit(error = message->InitAsNonConfirmablePost(UriPath::kDiagnosticGetQuery));
}
else
{
handler = &NetworkDiagnostic::HandleDiagnosticGetResponse;
SuccessOrExit(
error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DIAGNOSTIC_GET_REQUEST));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kDiagnosticGetRequest));
}
if (aCount > 0)
@@ -149,7 +147,7 @@ void NetworkDiagnostic::HandleDiagnosticGetResponse(Coap::Message * aMes
otError aResult)
{
VerifyOrExit(aResult == OT_ERROR_NONE, OT_NOOP);
VerifyOrExit(aMessage && aMessage->GetCode() == OT_COAP_CODE_CHANGED, OT_NOOP);
VerifyOrExit(aMessage && aMessage->GetCode() == Coap::kCodeChanged, OT_NOOP);
otLogInfoNetDiag("Received diagnostic get response");
@@ -172,7 +170,7 @@ void NetworkDiagnostic::HandleDiagnosticGetAnswer(void * aContext,
void NetworkDiagnostic::HandleDiagnosticGetAnswer(Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo)
{
VerifyOrExit(aMessage.IsConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsConfirmablePostRequest(), OT_NOOP);
otLogInfoNetDiag("Diagnostic get answer received");
@@ -474,7 +472,7 @@ void NetworkDiagnostic::HandleDiagnosticGetQuery(Coap::Message &aMessage, const
NetworkDiagnosticTlv networkDiagnosticTlv;
Ip6::MessageInfo messageInfo;
VerifyOrExit(aMessage.GetCode() == OT_COAP_CODE_POST, error = OT_ERROR_DROP);
VerifyOrExit(aMessage.IsPostRequest(), error = OT_ERROR_DROP);
otLogInfoNetDiag("Received diagnostic get query");
@@ -495,8 +493,7 @@ void NetworkDiagnostic::HandleDiagnosticGetQuery(Coap::Message &aMessage, const
VerifyOrExit((message = Get<Tmf::TmfAgent>().NewMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error =
message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DIAGNOSTIC_GET_ANSWER));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kDiagnosticGetAnswer));
if (networkDiagnosticTlv.GetLength() > 0)
{
@@ -550,7 +547,7 @@ void NetworkDiagnostic::HandleDiagnosticGetRequest(Coap::Message &aMessage, cons
NetworkDiagnosticTlv networkDiagnosticTlv;
Ip6::MessageInfo messageInfo(aMessageInfo);
VerifyOrExit(aMessage.IsConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, error = OT_ERROR_DROP);
VerifyOrExit(aMessage.IsConfirmablePostRequest(), error = OT_ERROR_DROP);
otLogInfoNetDiag("Received diagnostic get request");
@@ -595,7 +592,7 @@ otError NetworkDiagnostic::SendDiagnosticReset(const Ip6::Address &aDestination,
VerifyOrExit((message = Get<Tmf::TmfAgent>().NewMessage()) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DIAGNOSTIC_RESET));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kDiagnosticReset));
if (aCount > 0)
{
@@ -647,7 +644,7 @@ void NetworkDiagnostic::HandleDiagnosticReset(Coap::Message &aMessage, const Ip6
otLogInfoNetDiag("Received diagnostic reset request");
VerifyOrExit(aMessage.IsConfirmable() && aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsConfirmablePostRequest(), OT_NOOP);
VerifyOrExit((aMessage.Read(aMessage.GetOffset(), sizeof(tlv), &tlv) == sizeof(tlv)), OT_NOOP);
+4 -4
View File
@@ -42,7 +42,7 @@
#include "meshcop/meshcop.hpp"
#include "meshcop/meshcop_tlvs.hpp"
#include "thread/thread_netif.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
@@ -51,7 +51,7 @@ PanIdQueryServer::PanIdQueryServer(Instance &aInstance)
, mChannelMask(0)
, mPanId(Mac::kPanIdBroadcast)
, mTimer(aInstance, PanIdQueryServer::HandleTimer, this)
, mPanIdQuery(OT_URI_PATH_PANID_QUERY, &PanIdQueryServer::HandleQuery, this)
, mPanIdQuery(UriPath::kPanIdQuery, &PanIdQueryServer::HandleQuery, this)
{
Get<Tmf::TmfAgent>().AddResource(mPanIdQuery);
}
@@ -68,7 +68,7 @@ void PanIdQueryServer::HandleQuery(Coap::Message &aMessage, const Ip6::MessageIn
Ip6::MessageInfo responseInfo(aMessageInfo);
uint32_t mask;
VerifyOrExit(aMessage.GetCode() == OT_COAP_CODE_POST, OT_NOOP);
VerifyOrExit(aMessage.IsPostRequest(), OT_NOOP);
VerifyOrExit((mask = MeshCoP::ChannelMaskTlv::GetChannelMask(aMessage)) != 0, OT_NOOP);
SuccessOrExit(Tlv::FindUint16Tlv(aMessage, MeshCoP::Tlv::kPanId, panId));
@@ -117,7 +117,7 @@ void PanIdQueryServer::SendConflict(void)
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Tmf::TmfAgent>())) != nullptr, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_PANID_CONFLICT));
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kPanIdConflict));
SuccessOrExit(error = message->SetPayloadMarker());
channelMask.Init();
+1 -1
View File
@@ -43,7 +43,7 @@
#include "net/udp6.hpp"
#include "thread/mle.hpp"
#include "thread/thread_tlvs.hpp"
#include "thread/thread_uri_paths.hpp"
#include "thread/uri_paths.hpp"
namespace ot {
-338
View File
@@ -1,338 +0,0 @@
/*
* Copyright (c) 2016, The OpenThread Authors.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/**
* @file
* This file includes definitions for Thread URIs.
*/
#ifndef THREAD_URIS_HPP_
#define THREAD_URIS_HPP_
#include "openthread-core-config.h"
namespace ot {
/**
* The URI Path for Address Query.
*
*/
#define OT_URI_PATH_ADDRESS_QUERY "a/aq"
/**
* @def OT_URI_PATH_ADDRESS_NOTIFY
*
* The URI Path for Address Notify.
*
*/
#define OT_URI_PATH_ADDRESS_NOTIFY "a/an"
/**
* @def OT_URI_PATH_ADDRESS_ERROR
*
* The URI Path for Address Error.
*
*/
#define OT_URI_PATH_ADDRESS_ERROR "a/ae"
/**
* @def OT_URI_PATH_ADDRESS_RELEASE
*
* The URI Path for Address Release.
*
*/
#define OT_URI_PATH_ADDRESS_RELEASE "a/ar"
/**
* @def OT_URI_PATH_ADDRESS_SOLICIT
*
* The URI Path for Address Solicit.
*
*/
#define OT_URI_PATH_ADDRESS_SOLICIT "a/as"
/**
* @def OT_URI_PATH_ACTIVE_GET
*
* The URI Path for MGMT_ACTIVE_GET
*
*/
#define OT_URI_PATH_ACTIVE_GET "c/ag"
/**
* @def OT_URI_PATH_ACTIVE_SET
*
* The URI Path for MGMT_ACTIVE_SET
*
*/
#define OT_URI_PATH_ACTIVE_SET "c/as"
/**
* @def OT_URI_PATH_DATASET_CHANGED
*
* The URI Path for MGMT_DATASET_CHANGED
*
*/
#define OT_URI_PATH_DATASET_CHANGED "c/dc"
/**
* @def OT_URI_PATH_ENERGY_SCAN
*
* The URI Path for Energy Scan
*
*/
#define OT_URI_PATH_ENERGY_SCAN "c/es"
/**
* @def OT_URI_PATH_ENERGY_REPORT
*
* The URI Path for Energy Report
*
*/
#define OT_URI_PATH_ENERGY_REPORT "c/er"
/**
* @def OT_URI_PATH_PENDING_GET
*
* The URI Path for MGMT_PENDING_GET
*
*/
#define OT_URI_PATH_PENDING_GET "c/pg"
/**
* @def OT_URI_PATH_PENDING_SET
*
* The URI Path for MGMT_PENDING_SET
*
*/
#define OT_URI_PATH_PENDING_SET "c/ps"
/**
* @def OT_URI_PATH_SERVER_DATA
*
* The URI Path for Server Data Registration.
*
*/
#define OT_URI_PATH_SERVER_DATA "a/sd"
/**
* @def OT_URI_PATH_ANNOUNCE_BEGIN
*
* The URI Path for Announce Begin.
*
*/
#define OT_URI_PATH_ANNOUNCE_BEGIN "c/ab"
/**
* @def OT_URI_PATH_PROXY_RX
*
* The URI Path for Proxy RX.
*
*/
#define OT_URI_PATH_PROXY_RX "c/ur"
/**
* @def OT_URI_PATH_PROXY_TX
*
* The URI Path for Proxy TX.
*
*/
#define OT_URI_PATH_PROXY_TX "c/ut"
/**
* @def OT_URI_PATH_RELAY_RX
*
* The URI Path for Relay RX.
*
*/
#define OT_URI_PATH_RELAY_RX "c/rx"
/**
* @def OT_URI_PATH_RELAY_TX
*
* The URI Path for Relay TX.
*
*/
#define OT_URI_PATH_RELAY_TX "c/tx"
/**
* @def OT_URI_PATH_JOINER_FINALIZE
*
* The URI Path for Joiner Finalize
*
*/
#define OT_URI_PATH_JOINER_FINALIZE "c/jf"
/**
* @def OT_URI_PATH_JOINER_ENTRUST
*
* The URI Path for Joiner Entrust
*
*/
#define OT_URI_PATH_JOINER_ENTRUST "c/je"
/**
* @def OT_URI_PATH_LEADER_PETITION
*
* The URI Path for Leader Petition
*
*/
#define OT_URI_PATH_LEADER_PETITION "c/lp"
/**
* @def OT_URI_PATH_LEADER_KEEP_ALIVE
*
* The URI Path for Leader Keep Alive
*
*/
#define OT_URI_PATH_LEADER_KEEP_ALIVE "c/la"
/**
* @def OT_URI_PATH_PANID_CONFLICT
*
* The URI Path for PAN ID Conflict
*
*/
#define OT_URI_PATH_PANID_CONFLICT "c/pc"
/**
* @def OT_URI_PATH_PANID_QUERY
*
* The URI Path for PAN ID Query
*
*/
#define OT_URI_PATH_PANID_QUERY "c/pq"
/**
* @def OT_URI_PATH_COMMISSIONER_GET
*
* The URI Path for MGMT_COMMISSIONER_GET
*
*/
#define OT_URI_PATH_COMMISSIONER_GET "c/cg"
/**
* @def OT_URI_PATH_COMMISSIONER_KEEP_ALIVE
*
* The URI Path for Commissioner Keep Alive.
*
*/
#define OT_URI_PATH_COMMISSIONER_KEEP_ALIVE "c/ca"
/**
* @def OT_URI_PATH_COMMISSIONER_PETITION
*
* The URI Path for Commissioner Petition.
*
*/
#define OT_URI_PATH_COMMISSIONER_PETITION "c/cp"
/**
* @def OT_URI_PATH_COMMISSIONER_SET
*
* The URI Path for MGMT_COMMISSIONER_SET
*
*/
#define OT_URI_PATH_COMMISSIONER_SET "c/cs"
/**
* @def OT_URI_PATH_DIAGNOSTIC_GET_REQUEST
*
* The URI Path for Network Diagnostic Get Request.
*
*/
#define OT_URI_PATH_DIAGNOSTIC_GET_REQUEST "d/dg"
/**
* @def OT_URI_PATH_DIAGNOSTIC_GET_QUERY
*
* The URI Path for Network Diagnostic Get Query.
*
*/
#define OT_URI_PATH_DIAGNOSTIC_GET_QUERY "d/dq"
/**
* @def OT_URI_PATH_DIAGNOSTIC_GET_ANSWER
*
* The URI Path for Network Diagnostic Get Answer.
*
*/
#define OT_URI_PATH_DIAGNOSTIC_GET_ANSWER "d/da"
/**
* @def OT_URI_PATH_DIAG_RST
*
* The URI Path for Network Diagnostic Reset.
*
*/
#define OT_URI_PATH_DIAGNOSTIC_RESET "d/dr"
/**
* @def OT_URI_PATH_MLR
*
* The URI Path for Multicast Listener Registration.
*
*/
#define OT_URI_PATH_MLR "n/mr"
/**
* @def OT_URI_PATH_DUA_REGISTRATION_REQUEST
*
* The URI Path for Domain Unicast Address Registration Request (DUA.req).
*
*/
#define OT_URI_PATH_DUA_REGISTRATION_REQUEST "n/dr"
/**
* @def OT_URI_PATH_DUA_REGISTRATION_NOTIFY
*
* The URI Path for Domain Unicast Address Registration Notification (DUA.ntf).
*
*/
#define OT_URI_PATH_DUA_REGISTRATION_NOTIFY "n/dn"
/**
* @def OT_URI_PATH_BACKBONE_QUERY
*
* The URI Path for Backbone Query (BB.qry).
*
*/
#define OT_URI_PATH_BACKBONE_QUERY "b/bq"
/**
* @def OT_URI_PATH_BACKBONE_ANSWER
*
* The URI Path for Backbone Answer with destination to a link-local unicast address (BB.ans),
* or Proactive Backbone Notification with destination to a link-local multicast address (PRO_BB.ntf).
*
*/
#define OT_URI_PATH_BACKBONE_ANSWER "b/ba"
} // namespace ot
#endif // THREAD_URIS_HPP_
+76
View File
@@ -0,0 +1,76 @@
/*
* Copyright (c) 2020, The OpenThread Authors.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/**
* @file
* This file includes definitions for Thread URIs.
*/
#include "uri_paths.hpp"
namespace ot {
const char UriPath::kAddressQuery[] = "a/aq";
const char UriPath::kAddressNotify[] = "a/an";
const char UriPath::kAddressError[] = "a/ae";
const char UriPath::kAddressRelease[] = "a/ar";
const char UriPath::kAddressSolicit[] = "a/as";
const char UriPath::kActiveGet[] = "c/ag";
const char UriPath::kActiveSet[] = "c/as";
const char UriPath::kDatasetChanged[] = "c/dc";
const char UriPath::kEnergyScan[] = "c/es";
const char UriPath::kEnergyReport[] = "c/er";
const char UriPath::kPendingGet[] = "c/pg";
const char UriPath::kPendingSet[] = "c/ps";
const char UriPath::kServerData[] = "a/sd";
const char UriPath::kAnnounceBegin[] = "c/ab";
const char UriPath::kProxyRx[] = "c/ur";
const char UriPath::kProxyTx[] = "c/ut";
const char UriPath::kRelayRx[] = "c/rx";
const char UriPath::kRelayTx[] = "c/tx";
const char UriPath::kJoinerFinalize[] = "c/jf";
const char UriPath::kJoinerEntrust[] = "c/je";
const char UriPath::kLeaderPetition[] = "c/lp";
const char UriPath::kLeaderKeepAlive[] = "c/la";
const char UriPath::kPanIdConflict[] = "c/pc";
const char UriPath::kPanIdQuery[] = "c/pq";
const char UriPath::kCommissionerGet[] = "c/cg";
const char UriPath::kCommissionerKeepAlive[] = "c/ca";
const char UriPath::kCommissionerPetition[] = "c/cp";
const char UriPath::kCommissionerSet[] = "c/cs";
const char UriPath::kDiagnosticGetRequest[] = "d/dg";
const char UriPath::kDiagnosticGetQuery[] = "d/dq";
const char UriPath::kDiagnosticGetAnswer[] = "d/da";
const char UriPath::kDiagnosticReset[] = "d/dr";
const char UriPath::kMlr[] = "n/mr";
const char UriPath::kDuaRegistrationRequest[] = "n/dr";
const char UriPath::kDuaRegistrationNotify[] = "n/dn";
const char UriPath::kBackboneQuery[] = "b/bq";
const char UriPath::kBackboneAnswer[] = "b/ba";
} // namespace ot
+89
View File
@@ -0,0 +1,89 @@
/*
* Copyright (c) 2020, The OpenThread Authors.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/**
* @file
* This file includes definitions for Thread URIs.
*/
#ifndef URI_PATHS_HPP_
#define URI_PATHS_HPP_
#include "openthread-core-config.h"
namespace ot {
/**
*
* This structure contains Thread URI Path string definitions.
*
*/
struct UriPath
{
static const char kAddressQuery[]; ///< The URI Path for Address Query ("a/aq").
static const char kAddressNotify[]; ///< The URI Path for Address Notify ("a/an").
static const char kAddressError[]; ///< The URI Path for Address Error ("a/ae").
static const char kAddressRelease[]; ///< The URI Path for Address Release ("a/ar").
static const char kAddressSolicit[]; ///< The URI Path for Address Solicit ("a/as").
static const char kActiveGet[]; ///< The URI Path for MGMT_ACTIVE_GE ("c/ag")T
static const char kActiveSet[]; ///< The URI Path for MGMT_ACTIVE_SET ("c/as").
static const char kDatasetChanged[]; ///< The URI Path for MGMT_DATASET_CHANGED ("c/dc").
static const char kEnergyScan[]; ///< The URI Path for Energy Scan ("c/es").
static const char kEnergyReport[]; ///< The URI Path for Energy Report ("c/er").
static const char kPendingGet[]; ///< The URI Path for MGMT_PENDING_GET ("c/pg").
static const char kPendingSet[]; ///< The URI Path for MGMT_PENDING_SET ("c/ps").
static const char kServerData[]; ///< The URI Path for Server Data Registration ("a/sd").
static const char kAnnounceBegin[]; ///< The URI Path for Announce Begin ("c/ab").
static const char kProxyRx[]; ///< The URI Path for Proxy RX ("c/ur").
static const char kProxyTx[]; ///< The URI Path for Proxy TX ("c/ut").
static const char kRelayRx[]; ///< The URI Path for Relay RX ("c/rx").
static const char kRelayTx[]; ///< The URI Path for Relay TX ("c/tx").
static const char kJoinerFinalize[]; ///< The URI Path for Joiner Finalize ("c/jf").
static const char kJoinerEntrust[]; ///< The URI Path for Joiner Entrust ("c/je").
static const char kLeaderPetition[]; ///< The URI Path for Leader Petition ("c/lp").
static const char kLeaderKeepAlive[]; ///< The URI Path for Leader Keep Alive ("c/la").
static const char kPanIdConflict[]; ///< The URI Path for PAN ID Conflict ("c/pc").
static const char kPanIdQuery[]; ///< The URI Path for PAN ID Query ("c/pq").
static const char kCommissionerGet[]; ///< The URI Path for MGMT_COMMISSIONER_GET ("c/cg").
static const char kCommissionerKeepAlive[]; ///< The URI Path for Commissioner Keep Alive ("c/ca").
static const char kCommissionerPetition[]; ///< The URI Path for Commissioner Petition ("c/cp").
static const char kCommissionerSet[]; ///< The URI Path for MGMT_COMMISSIONER_SET ("c/cs").
static const char kDiagnosticGetRequest[]; ///< The URI Path for Network Diagnostic Get Request ("d/dg").
static const char kDiagnosticGetQuery[]; ///< The URI Path for Network Diagnostic Get Query ("d/dq").
static const char kDiagnosticGetAnswer[]; ///< The URI Path for Network Diagnostic Get Answer ("d/da").
static const char kDiagnosticReset[]; ///< The URI Path for Network Diagnostic Reset ("d/dr").
static const char kMlr[]; ///< The URI Path for Multicast Listener Registration ("n/mr").
static const char kDuaRegistrationRequest[]; ///< The URI Path for DUA Registration Request ("n/dr").
static const char kDuaRegistrationNotify[]; ///< The URI Path for DUA Registration Notification ("n/dn").
static const char kBackboneQuery[]; ///< The URI Path for Backbone Query ("b/bq").
static const char kBackboneAnswer[]; ///< The URI Path for Backbone Answer ("b/ba").
};
} // namespace ot
#endif // URI_PATHS_HPP_