/* * * Copyright (c) 2023 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. */ #include #include #include #include #include #include #include using namespace chip; using namespace chip::app; using namespace chip::app::Clusters; namespace { app::Clusters::TemperatureControl::AppSupportedTemperatureLevelsDelegate sAppSupportedTemperatureLevelsDelegate; // Please refer to https://github.com/CHIP-Specifications/connectedhomeip-spec/blob/master/src/namespaces constexpr const uint8_t kNamespaceRefrigerator = 0x41; // Refrigerator Namespace: 0x41, tag 0x00 (Refrigerator) constexpr const uint8_t kTagRefrigerator = 0x00; // Refrigerator Namespace: 0x41, tag 0x01 (Freezer) constexpr const uint8_t kTagFreezer = 0x01; const Clusters::Descriptor::Structs::SemanticTagStruct::Type refrigeratorTagList[] = { { .namespaceID = kNamespaceRefrigerator, .tag = kTagRefrigerator } }; const Clusters::Descriptor::Structs::SemanticTagStruct::Type freezerTagList[] = { { .namespaceID = kNamespaceRefrigerator, .tag = kTagFreezer } }; } // namespace void ApplicationInit() { // set Parent Endpoint and Composition Type for an Endpoint EndpointId kRefEndpointId = 1; EndpointId kColdCabinetEndpointId = 2; EndpointId kFreezeCabinetEndpointId = 3; SetTreeCompositionForEndpoint(kRefEndpointId); SetParentEndpointForEndpoint(kColdCabinetEndpointId, kRefEndpointId); SetParentEndpointForEndpoint(kFreezeCabinetEndpointId, kRefEndpointId); // set TagList SetTagList(kColdCabinetEndpointId, Span(refrigeratorTagList)); SetTagList(kFreezeCabinetEndpointId, Span(freezerTagList)); app::Clusters::TemperatureControl::SetInstance(&sAppSupportedTemperatureLevelsDelegate); } void ApplicationShutdown() {} int main(int argc, char * argv[]) { if (ChipLinuxAppInit(argc, argv) != 0) { return -1; } ChipLinuxAppMainLoop(); return 0; }