| /* |
| * |
| * Copyright (c) 2021 Project CHIP Authors |
| * 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 |
| * The defines constants for the CHIP Interaction Model Protocol, present in |
| * every CHIP device. |
| * |
| */ |
| |
| #pragma once |
| |
| #include <type_traits> |
| |
| #include <array> |
| #include <protocols/Protocols.h> |
| #include <protocols/interaction_model/StatusCode.h> |
| |
| /** |
| * @namespace chip::Protocols::InteractionModel |
| * |
| * @brief |
| * This namespace includes all interfaces within CHIP for the |
| * CHIP InteractionModel protocol. |
| * |
| * The interfaces define message types. |
| */ |
| |
| namespace chip { |
| namespace Protocols { |
| namespace InteractionModel { |
| |
| constexpr const char * kProtocolName = "IM"; |
| |
| /** |
| * Version of the Interaction Model used by the node. |
| */ |
| constexpr uint16_t kVersion = 0; |
| |
| /** |
| * Interaction Model Protocol Message Types |
| */ |
| enum class MsgType : uint8_t |
| { |
| StatusResponse = 0x01, |
| ReadRequest = 0x02, |
| SubscribeRequest = 0x03, |
| SubscribeResponse = 0x04, |
| ReportData = 0x05, |
| WriteRequest = 0x06, |
| WriteResponse = 0x07, |
| InvokeCommandRequest = 0x08, |
| InvokeCommandResponse = 0x09, |
| TimedRequest = 0x0a, |
| }; |
| |
| } // namespace InteractionModel |
| |
| template <> |
| struct MessageTypeTraits<InteractionModel::MsgType> |
| { |
| static constexpr const Protocols::Id & ProtocolId() { return InteractionModel::Id; } |
| |
| static auto GetTypeToNameTable() |
| { |
| static const std::array<MessageTypeNameLookup, 10> typeToNameTable = { |
| { |
| { InteractionModel::MsgType::StatusResponse, "StatusResponse" }, |
| { InteractionModel::MsgType::ReadRequest, "ReadRequest" }, |
| { InteractionModel::MsgType::SubscribeRequest, "SubscribeRequest" }, |
| { InteractionModel::MsgType::SubscribeResponse, "SubscribeResponse" }, |
| { InteractionModel::MsgType::ReportData, "ReportData" }, |
| { InteractionModel::MsgType::WriteRequest, "WriteRequest" }, |
| { InteractionModel::MsgType::WriteResponse, "WriteResponse" }, |
| { InteractionModel::MsgType::InvokeCommandRequest, "InvokeCommandRequest" }, |
| { InteractionModel::MsgType::InvokeCommandResponse, "InvokeCommandResponse" }, |
| { InteractionModel::MsgType::TimedRequest, "TimedRequest" }, |
| }, |
| }; |
| |
| return &typeToNameTable; |
| } |
| }; |
| |
| } // namespace Protocols |
| } // namespace chip |