| /* |
| * |
| * Copyright (c) 2022 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 <app-common/zap-generated/attributes/Accessors.h> |
| #include <app-common/zap-generated/ids/Clusters.h> |
| #include <app/ConcreteAttributePath.h> |
| #include <app/clusters/door-lock-server/door-lock-server.h> |
| #include <app/data-model/Nullable.h> |
| #include <lib/core/DataModelTypes.h> |
| #include <lib/support/CodeUtils.h> |
| |
| using namespace ::chip; |
| using namespace ::chip::app::Clusters; |
| using namespace ::chip::app::Clusters::DoorLock; |
| using ::chip::app::DataModel::Nullable; |
| |
| LOG_MODULE_DECLARE(app, CONFIG_CHIP_APP_LOG_LEVEL); |
| |
| // Provided some empty callbacks and replaced feature map |
| // to simulate DoorLock endpoint for All-Clusters-App example |
| // without using kUser|kAccessSchedules|kRfidCredential|kPinCredential |
| |
| bool emberAfPluginDoorLockOnDoorLockCommand(chip::EndpointId endpointId, const Nullable<chip::FabricIndex> & fabricIdx, |
| const Nullable<chip::NodeId> & nodeId, const Optional<ByteSpan> & pinCode, |
| OperationErrorEnum & err) |
| { |
| return true; |
| } |
| |
| bool emberAfPluginDoorLockOnDoorUnlockCommand(chip::EndpointId endpointId, const Nullable<chip::FabricIndex> & fabricIdx, |
| const Nullable<chip::NodeId> & nodeId, const Optional<ByteSpan> & pinCode, |
| OperationErrorEnum & err) |
| { |
| return true; |
| } |
| |
| void emberAfDoorLockClusterInitCallback(EndpointId endpoint) |
| { |
| DoorLockServer::Instance().InitServer(endpoint); |
| |
| // Set FeatureMap to 0, default is: |
| // (kUser|kAccessSchedules|kRfidCredential|kPinCredential) 0x113 |
| Protocols::InteractionModel::Status status = DoorLock::Attributes::FeatureMap::Set(endpoint, 0); |
| if (status != Protocols::InteractionModel::Status::Success) |
| { |
| LOG_ERR("Updating feature map %x", to_underlying(status)); |
| } |
| } |