blob: f081f9edd15087129024b21b259e96bcd18013b2 [file] [log] [blame]
/*
*
* Copyright (c) 2013-2017 Nest Labs, Inc.
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file
* This file defines functions for converting various ids into human-readable strings.
*
*/
#include <stdlib.h>
// Note that the choice of namespace alias must be made up front for each and every compile unit
// This is because many include paths could set the default alias to unintended target.
#include <Weave/Profiles/bulk-data-transfer/Development/BDXManagedNamespace.hpp>
#include <Weave/Profiles/data-management/Current/WdmManagedNamespace.h>
#include <Weave/Core/WeaveCore.h>
#include <Weave/Profiles/WeaveProfiles.h>
#include <Weave/Profiles/common/CommonProfile.h>
#include <Weave/Profiles/echo/WeaveEcho.h>
#include <Weave/Profiles/network-provisioning/NetworkProvisioning.h>
#include <Weave/Profiles/security/WeaveSecurity.h>
#include <Weave/Profiles/fabric-provisioning/FabricProvisioning.h>
#include <Weave/Profiles/device-control/DeviceControl.h>
#include <Weave/Profiles/time/WeaveTime.h>
#include <Weave/Profiles/data-management/DataManagement.h>
#include <Weave/Profiles/software-update/SoftwareUpdateProfile.h>
#include <Weave/Profiles/bulk-data-transfer/BulkDataTransfer.h>
#include <Weave/Profiles/bulk-data-transfer/Development/BDXConstants.h>
#include <Weave/Profiles/device-description/DeviceDescription.h>
#include <Weave/Profiles/service-provisioning/ServiceProvisioning.h>
#include <Weave/Profiles/service-directory/ServiceDirectory.h>
#include <Weave/Profiles/weave-tunneling/WeaveTunnelCommon.h>
#include <Weave/Profiles/heartbeat/WeaveHeartbeat.h>
#include <Weave/Profiles/token-pairing/TokenPairing.h>
#include <Weave/Support/ProfileStringSupport.hpp>
namespace nl {
namespace Weave {
using namespace nl::Weave::Profiles;
const char *GetVendorName(uint16_t vendorId)
{
switch (vendorId) {
case kWeaveVendor_Common : return "Common";
case kWeaveVendor_NestLabs : return "Nest";
case kWeaveVendor_Yale : return "Yale";
}
return NULL;
}
static const char *FindProfileName(uint32_t inProfileId)
{
const Support::ProfileStringInfo *info;
const char *result = NULL;
info = Support::FindProfileStringInfo(inProfileId);
if (info != NULL && info->mProfileNameFunct != NULL)
{
result = info->mProfileNameFunct(inProfileId);
}
return (result);
}
static const char *FindMessageName(uint32_t inProfileId, uint8_t inMsgType)
{
const Support::ProfileStringInfo *info;
const char *result = NULL;
info = Support::FindProfileStringInfo(inProfileId);
if (info != NULL && info->mMessageNameFunct != NULL)
{
result = info->mMessageNameFunct(inProfileId, inMsgType);
}
return (result);
}
const char *GetProfileName(uint32_t profileId)
{
const char *result = NULL;
switch (profileId) {
case kWeaveProfile_Common : return "Common";
case kWeaveProfile_Echo : return "Echo";
case kWeaveProfile_NetworkProvisioning : return "NetworkProvisioning";
case kWeaveProfile_Security : return "Security";
case kWeaveProfile_FabricProvisioning : return "FabricProvisioning";
case kWeaveProfile_DeviceControl : return "DeviceControl";
case kWeaveProfile_Time : return "Time";
case kWeaveProfile_WDM : return "WDM";
case kWeaveProfile_SWU : return "SWU";
case kWeaveProfile_BDX : return "BDX";
case kWeaveProfile_DeviceDescription : return "DeviceDescription";
case kWeaveProfile_ServiceProvisioning : return "ServiceProvisioning";
case kWeaveProfile_ServiceDirectory : return "ServiceDirectory";
case kWeaveProfile_Locale : return "Locale";
case kWeaveProfile_Tunneling : return "Tunneling";
case kWeaveProfile_Heartbeat : return "Heartbeat";
case kWeaveProfile_TokenPairing : return "TokenPairing";
case kWeaveProfile_DictionaryKey : return "DictionaryKey";
case kWeaveProfile_Occupancy : return "Nest:Occupancy";
case kWeaveProfile_Structure : return "Nest:Structure";
case kWeaveProfile_NestProtect : return "Nest:Protect";
case kWeaveProfile_TimeVariantData : return "Nest:TimeVariantData";
case kWeaveProfile_HeatLink : return "Nest:HeatLink";
case kWeaveProfile_Safety : return "Nest:Safety";
case kWeaveProfile_SafetySummary : return "Nest:SafetySummary";
case kWeaveProfile_NestThermostat : return "Nest:Thermostat";
case kWeaveProfile_NestBoiler : return "Nest:Boiler";
case kWeaveProfile_NestHvacEquipmentControl : return "Nest:HvacEquipmentControl";
case kWeaveProfile_NestDomesticHotWater : return "Nest:DomesticHotWater";
case kWeaveProfile_TopazHistory : return "Nest:TopazHistory";
case kWeaveProfile_NestNetworkManager : return "Nest:NetworkManager";
}
result = FindProfileName(profileId);
return (result);
}
const char *GetMessageName(uint32_t profileId, uint8_t msgType)
{
const char *result = NULL;
switch (profileId) {
case kWeaveProfile_Common:
switch (msgType) {
case Common::kMsgType_StatusReport : return "StatusReport";
case Common::kMsgType_Null : return "Null";
case Common::kMsgType_WRMP_Delayed_Delivery : return "DelayedDelivery";
case Common::kMsgType_WRMP_Throttle_Flow : return "ThrottleFlow";
}
break;
case kWeaveProfile_Echo:
switch (msgType) {
case kEchoMessageType_EchoRequest : return "EchoRequest";
case kEchoMessageType_EchoResponse : return "EchoResponse";
}
break;
case kWeaveProfile_NetworkProvisioning:
switch (msgType) {
case NetworkProvisioning::kMsgType_ScanNetworks : return "ScanNetworks";
case NetworkProvisioning::kMsgType_NetworkScanComplete : return "NetworkScanComplete";
case NetworkProvisioning::kMsgType_AddNetwork : return "AddNetwork";
case NetworkProvisioning::kMsgType_AddNetworkComplete : return "AddNetworkComplete";
case NetworkProvisioning::kMsgType_UpdateNetwork : return "UpdateNetwork";
case NetworkProvisioning::kMsgType_RemoveNetwork : return "RemoveNetwork";
case NetworkProvisioning::kMsgType_EnableNetwork : return "EnableNetwork";
case NetworkProvisioning::kMsgType_DisableNetwork : return "DisableNetwork";
case NetworkProvisioning::kMsgType_TestConnectivity : return "TestConnectivity";
case NetworkProvisioning::kMsgType_SetRendezvousMode : return "SetRendezvousMode";
case NetworkProvisioning::kMsgType_GetNetworks : return "GetNetworks";
case NetworkProvisioning::kMsgType_GetNetworksComplete : return "GetNetworksComplete";
case NetworkProvisioning::kMsgType_GetLastResult : return "GetLastResult";
}
break;
case kWeaveProfile_Security:
switch (msgType) {
case Security::kMsgType_PASEInitiatorStep1 : return "PASEInitiatorStep1";
case Security::kMsgType_PASEResponderStep1 : return "PASEResponderStep1";
case Security::kMsgType_PASEResponderStep2 : return "PASEResponderStep2";
case Security::kMsgType_PASEInitiatorStep2 : return "PASEInitiatorStep2";
case Security::kMsgType_PASEResponderKeyConfirm : return "PASEResponderKeyConfirm";
case Security::kMsgType_PASEResponderReconfigure : return "PASEReconfigure";
case Security::kMsgType_CASEBeginSessionRequest : return "CASEBeginSessionRequest";
case Security::kMsgType_CASEBeginSessionResponse : return "CASEBeginSessionResponse";
case Security::kMsgType_CASEInitiatorKeyConfirm : return "CASEInitiatorKeyConfirm";
case Security::kMsgType_CASEReconfigure : return "CASEReconfigure";
case Security::kMsgType_TAKEIdentifyToken : return "TAKEIdentifyToken";
case Security::kMsgType_TAKEIdentifyTokenResponse : return "TAKEIdentifyTokenResponse";
case Security::kMsgType_TAKETokenReconfigure : return "TAKETokenReconfigure";
case Security::kMsgType_TAKEAuthenticateToken : return "TAKEAuthenticateToken";
case Security::kMsgType_TAKEAuthenticateTokenResponse : return "TAKEAuthenticateTokenResponse";
case Security::kMsgType_TAKEReAuthenticateToken : return "TAKEReAuthenticateToken";
case Security::kMsgType_TAKEReAuthenticateTokenResponse : return "TAKEReAuthenticateTokenResponse";
case Security::kMsgType_EndSession : return "EndSession";
case Security::kMsgType_KeyError : return "KeyError";
}
break;
case kWeaveProfile_FabricProvisioning:
switch (msgType) {
case FabricProvisioning::kMsgType_CreateFabric : return "CreateFabric";
case FabricProvisioning::kMsgType_LeaveFabric : return "LeaveFabric";
case FabricProvisioning::kMsgType_GetFabricConfig : return "GetFabricConfig";
case FabricProvisioning::kMsgType_GetFabricConfigComplete : return "GetFabricConfigComplete";
case FabricProvisioning::kMsgType_JoinExistingFabric : return "JoinExistingFabric";
}
break;
case kWeaveProfile_DeviceControl:
switch (msgType) {
case DeviceControl::kMsgType_ResetConfig : return "ResetConfig";
case DeviceControl::kMsgType_ArmFailSafe : return "ArmFailSafe";
case DeviceControl::kMsgType_DisarmFailSafe : return "DisarmFailSafe";
case DeviceControl::kMsgType_EnableConnectionMonitor : return "EnableConnectionMonitor";
case DeviceControl::kMsgType_DisableConnectionMonitor : return "DisableConnectionMonitor";
case DeviceControl::kMsgType_RemotePassiveRendezvous : return "RemotePassiveRendezvous";
case DeviceControl::kMsgType_RemoteConnectionComplete : return "RemoteConnectionComplete";
case DeviceControl::kMsgType_StartSystemTest : return "StartSystemTest";
case DeviceControl::kMsgType_StopSystemTest : return "StopSystemTest";
}
break;
case kWeaveProfile_Time:
switch (msgType) {
case Time::kTimeMessageType_TimeSyncTimeChangeNotification : return "TimeSyncTimeChangeNotification";
case Time::kTimeMessageType_TimeSyncRequest : return "TimeSyncRequest";
case Time::kTimeMessageType_TimeSyncResponse : return "TimeSyncResponse";
}
break;
case kWeaveProfile_WDM:
switch (msgType) {
case DataManagement::kMsgType_ViewRequest : return "ViewRequest";
case DataManagement::kMsgType_ViewResponse : return "ViewResponse";
case DataManagement::kMsgType_UpdateRequest : return "UpdateRequest";
case DataManagement::kMsgType_InProgress : return "InProgress";
case DataManagement::kMsgType_SubscribeRequest : return "SubscribeRequest";
case DataManagement::kMsgType_SubscribeResponse : return "SubscribeResponse";
case DataManagement::kMsgType_SubscribeCancelRequest : return "SubscribeCancelRequest";
case DataManagement::kMsgType_SubscribeConfirmRequest : return "SubscribeConfirmRequest";
case DataManagement::kMsgType_NotificationRequest : return "NotificationRequest";
case DataManagement::kMsgType_CustomCommandRequest : return "CommandRequest";
case DataManagement::kMsgType_CustomCommandResponse : return "CommandResponse";
}
break;
case kWeaveProfile_SWU:
switch (msgType) {
case SoftwareUpdate::kMsgType_ImageAnnounce : return "ImageAnnounce";
case SoftwareUpdate::kMsgType_ImageQuery : return "ImageQuery";
case SoftwareUpdate::kMsgType_ImageQueryResponse : return "ImageQueryResponse";
case SoftwareUpdate::kMsgType_DownloadNotify : return "DownloadNotify";
case SoftwareUpdate::kMsgType_NotifyRepsponse : return "NotifyRepsponse";
case SoftwareUpdate::kMsgType_UpdateNotify : return "UpdateNotify";
case SoftwareUpdate::kMsgType_ImageQueryStatus : return "ImageQueryStatus";
}
break;
case kWeaveProfile_BDX:
switch (msgType) {
case BDX_Development::kMsgType_SendInit : return "SendInit";
case BDX_Development::kMsgType_SendAccept : return "SendAccept";
case BDX_Development::kMsgType_SendReject : return "SendReject";
case BDX_Development::kMsgType_ReceiveInit : return "ReceiveInit";
case BDX_Development::kMsgType_ReceiveAccept : return "ReceiveAccept";
case BDX_Development::kMsgType_ReceiveReject : return "ReceiveReject";
case BDX_Development::kMsgType_BlockQuery : return "BlockQuery";
case BDX_Development::kMsgType_BlockSend : return "BlockSend";
case BDX_Development::kMsgType_BlockEOF : return "BlockEOF";
case BDX_Development::kMsgType_BlockAck : return "BlockAck";
case BDX_Development::kMsgType_BlockEOFAck : return "BlockEOFAck";
case BDX_Development::kMsgType_TransferError : return "TransferError";
case BDX_Development::kMsgType_BlockQueryV1 : return "BlockQueryV1";
case BDX_Development::kMsgType_BlockSendV1 : return "BlockSendV1";
case BDX_Development::kMsgType_BlockEOFV1 : return "BlockEOFV1";
case BDX_Development::kMsgType_BlockAckV1 : return "BlockAckV1";
case BDX_Development::kMsgType_BlockEOFAckV1 : return "BlockEOFAckV1";
}
break;
case kWeaveProfile_DeviceDescription:
switch (msgType) {
case DeviceDescription::kMessageType_IdentifyRequest : return "IdentifyRequest";
case DeviceDescription::kMessageType_IdentifyResponse : return "IdentifyResponse";
}
break;
case kWeaveProfile_ServiceProvisioning:
switch (msgType) {
case ServiceProvisioning::kMsgType_RegisterServicePairAccount : return "RegisterServicePairAccount";
case ServiceProvisioning::kMsgType_UpdateService : return "UpdateService";
case ServiceProvisioning::kMsgType_UnregisterService : return "UnregisterService";
case ServiceProvisioning::kMsgType_UnpairDeviceFromAccount : return "UnpairDeviceFromAccount";
case ServiceProvisioning::kMsgType_PairDeviceToAccount : return "PairDeviceToAccount";
}
break;
case kWeaveProfile_ServiceDirectory:
switch (msgType) {
case ServiceDirectory::kMsgType_ServiceEndpointQuery : return "ServiceEndpointQuery";
case ServiceDirectory::kMsgType_ServiceEndpointResponse : return "ServiceEndpointResponse";
}
break;
#if WEAVE_CONFIG_ENABLE_TUNNELING
case kWeaveProfile_Tunneling:
switch (msgType) {
case WeaveTunnel::kMsgType_TunnelOpen : return "TunnelOpen";
case WeaveTunnel::kMsgType_TunnelOpenV2 : return "TunnelOpenV2";
case WeaveTunnel::kMsgType_TunnelRouteUpdate : return "TunnelRouteUpdate";
case WeaveTunnel::kMsgType_TunnelClose : return "TunnelClose";
case WeaveTunnel::kMsgType_TunnelReconnect : return "TunnelReconnect";
case WeaveTunnel::kMsgType_TunnelRouterAdvertise : return "TunnelRouterAdvertise";
case WeaveTunnel::kMsgType_TunnelMobileClientAdvertise : return "TunnelMobileClientAdvertise";
}
break;
#endif // WEAVE_CONFIG_ENABLE_TUNNELING
case kWeaveProfile_Heartbeat:
switch (msgType) {
case Heartbeat::kHeartbeatMessageType_Heartbeat : return "Heartbeat";
}
break;
case kWeaveProfile_TokenPairing:
switch (msgType) {
case TokenPairing::kMsgType_PairTokenRequest : return "PairTokenRequest";
case TokenPairing::kMsgType_TokenCertificateResponse : return "TokenCertificateResponse";
case TokenPairing::kMsgType_TokenPairedResponse : return "TokenPairedResponse";
case TokenPairing::kMsgType_UnpairTokenRequest : return "UnpairTokenRequest";
}
break;
}
result = FindMessageName(profileId, msgType);
return (result);
}
} // namespace Weave
} // namespace nl