| /* |
| * |
| * Copyright (c) 2021 Project CHIP Authors |
| * |
| * 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. |
| */ |
| |
| // THIS FILE IS GENERATED BY ZAP |
| |
| #include "gen/CHIPClientCallbacks.h" |
| |
| #include <cinttypes> |
| |
| #include <app/Command.h> |
| #include <app/common/gen/enums.h> |
| #include <app/util/CHIPDeviceCallbacksMgr.h> |
| #include <app/util/af-enums.h> |
| #include <app/util/af.h> |
| #include <app/util/attribute-list-byte-span.h> |
| #include <app/util/basic-types.h> |
| #include <core/CHIPEncoding.h> |
| #include <support/SafeInt.h> |
| #include <support/TypeTraits.h> |
| #include <support/logging/CHIPLogging.h> |
| |
| using namespace ::chip; |
| using namespace ::chip::app::List; |
| |
| constexpr uint16_t kByteSpanSizeLengthInBytes = 2; |
| |
| #define CHECK_STATUS_WITH_RETVAL(error, retval) \ |
| if (CHIP_NO_ERROR != error) \ |
| { \ |
| ChipLogError(Zcl, "CHECK_STATUS %s", ErrorStr(error)); \ |
| if (onFailureCallback != nullptr) \ |
| { \ |
| Callback::Callback<DefaultFailureCallback> * cb = \ |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \ |
| cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \ |
| } \ |
| return retval; \ |
| } |
| |
| #define CHECK_STATUS(error) CHECK_STATUS_WITH_RETVAL(error, true) |
| #define CHECK_STATUS_VOID(error) CHECK_STATUS_WITH_RETVAL(error, ) |
| |
| #define CHECK_MESSAGE_LENGTH_WITH_RETVAL(value, retval) \ |
| if (!chip::CanCastTo<uint16_t>(value)) \ |
| { \ |
| ChipLogError(Zcl, "CHECK_MESSAGE_LENGTH expects a uint16_t value, got: %d", value); \ |
| if (onFailureCallback != nullptr) \ |
| { \ |
| Callback::Callback<DefaultFailureCallback> * cb = \ |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \ |
| cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \ |
| } \ |
| return retval; \ |
| } \ |
| \ |
| if (messageLen < value) \ |
| { \ |
| ChipLogError(Zcl, "Unexpected response length: %d", messageLen); \ |
| if (onFailureCallback != nullptr) \ |
| { \ |
| Callback::Callback<DefaultFailureCallback> * cb = \ |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \ |
| cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \ |
| } \ |
| return retval; \ |
| } \ |
| \ |
| messageLen = static_cast<uint16_t>(messageLen - static_cast<uint16_t>(value)); |
| |
| #define CHECK_MESSAGE_LENGTH(value) CHECK_MESSAGE_LENGTH_WITH_RETVAL(value, true) |
| #define CHECK_MESSAGE_LENGTH_VOID(value) CHECK_MESSAGE_LENGTH_WITH_RETVAL(value, ) |
| |
| #define GET_RESPONSE_CALLBACKS(name) \ |
| Callback::Cancelable * onSuccessCallback = nullptr; \ |
| Callback::Cancelable * onFailureCallback = nullptr; \ |
| NodeId sourceId = emberAfCurrentCommand()->SourceNodeId(); \ |
| uint8_t sequenceNumber = emberAfCurrentCommand()->seqNum; \ |
| CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceId, sequenceNumber, &onSuccessCallback, &onFailureCallback); \ |
| \ |
| if (CHIP_NO_ERROR != err) \ |
| { \ |
| if (onSuccessCallback == nullptr) \ |
| { \ |
| ChipLogDetail(Zcl, "%s: Missing success callback", name); \ |
| } \ |
| \ |
| if (onFailureCallback == nullptr) \ |
| { \ |
| ChipLogDetail(Zcl, "%s: Missing failure callback", name); \ |
| } \ |
| \ |
| return true; \ |
| } |
| |
| #define GET_CLUSTER_RESPONSE_CALLBACKS(name) \ |
| Callback::Cancelable * onSuccessCallback = nullptr; \ |
| Callback::Cancelable * onFailureCallback = nullptr; \ |
| NodeId sourceIdentifier = reinterpret_cast<NodeId>(commandObj); \ |
| /* #6559: Currently, we only have one commands for the IMInvokeCommands and to a device, so the seqNum is always set to 0. */ \ |
| CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceIdentifier, 0, &onSuccessCallback, &onFailureCallback); \ |
| \ |
| if (CHIP_NO_ERROR != err) \ |
| { \ |
| if (onSuccessCallback == nullptr) \ |
| { \ |
| ChipLogDetail(Zcl, "%s: Missing success callback", name); \ |
| } \ |
| \ |
| if (onFailureCallback == nullptr) \ |
| { \ |
| ChipLogDetail(Zcl, "%s: Missing failure callback", name); \ |
| } \ |
| \ |
| return true; \ |
| } |
| |
| #define GET_ATTRIBUTE_RESPONSE_CALLBACKS(name) |
| |
| #define GET_REPORT_CALLBACK(name) \ |
| Callback::Cancelable * onReportCallback = nullptr; \ |
| CHIP_ERROR err = gCallbacks.GetReportCallback(sourceId, endpointId, clusterId, attributeId, &onReportCallback); \ |
| \ |
| if (CHIP_NO_ERROR != err) \ |
| { \ |
| if (onReportCallback == nullptr) \ |
| { \ |
| ChipLogDetail(Zcl, "%s: Missing report callback", name); \ |
| } \ |
| \ |
| return true; \ |
| } |
| |
| // TODO: These IM related callbacks contains small or no generated code, should be put into seperate file to reduce the size of |
| // template. |
| |
| void LogStatus(uint8_t status) |
| { |
| switch (status) |
| { |
| case EMBER_ZCL_STATUS_SUCCESS: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SUCCESS (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_FAILURE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_FAILURE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_NOT_AUTHORIZED: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_AUTHORIZED (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_MALFORMED_COMMAND: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_MALFORMED_COMMAND (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_UNSUP_COMMAND: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_INVALID_FIELD: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_FIELD (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_INVALID_VALUE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_VALUE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_READ_ONLY: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_READ_ONLY (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_INSUFFICIENT_SPACE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INSUFFICIENT_SPACE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_DUPLICATE_EXISTS: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DUPLICATE_EXISTS (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_NOT_FOUND: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_FOUND (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_INVALID_DATA_TYPE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_DATA_TYPE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_INVALID_SELECTOR: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_SELECTOR (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_WRITE_ONLY: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WRITE_ONLY (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DEFINED_OUT_Of_BAND (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_ACTION_DENIED: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ACTION_DENIED (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_TIMEOUT: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_TIMEOUT (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_ABORT: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ABORT (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_INVALID_IMAGE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_IMAGE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_WAIT_FOR_DATA: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WAIT_FOR_DATA (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_HARDWARE_FAILURE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_HARDWARE_FAILURE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_SOFTWARE_FAILURE: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SOFTWARE_FAILURE (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER (0x%02x)", status); |
| break; |
| case EMBER_ZCL_STATUS_LIMIT_REACHED: |
| ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_LIMIT_REACHED (0x%02x)", status); |
| break; |
| default: |
| ChipLogError(Zcl, "Unknow status: 0x%02x", status); |
| break; |
| } |
| } |
| |
| static void LogIMStatus(Protocols::InteractionModel::ProtocolCode status) |
| { |
| switch (status) |
| { |
| case Protocols::InteractionModel::ProtocolCode::Success: |
| ChipLogProgress(Zcl, " status: Success (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Failure: |
| ChipLogProgress(Zcl, " status: Failure (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::InvalidSubscription: |
| ChipLogProgress(Zcl, " status: InvalidSubscription (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::UnsupportedAccess: |
| ChipLogProgress(Zcl, " status: UnsupportedAccess (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::UnsupportedEndpoint: |
| ChipLogProgress(Zcl, " status: UnsupportedEndpoint (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::InvalidAction: |
| ChipLogProgress(Zcl, " status: InvalidAction (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::UnsupportedCommand: |
| ChipLogProgress(Zcl, " status: UnsupportedCommand (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecated82: |
| ChipLogProgress(Zcl, " status: Deprecated82 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecated83: |
| ChipLogProgress(Zcl, " status: Deprecated83 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecated84: |
| ChipLogProgress(Zcl, " status: Deprecated84 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::InvalidCommand: |
| ChipLogProgress(Zcl, " status: InvalidCommand (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::UnsupportedAttribute: |
| ChipLogProgress(Zcl, " status: UnsupportedAttribute (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::InvalidValue: |
| ChipLogProgress(Zcl, " status: InvalidValue (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::UnsupportedWrite: |
| ChipLogProgress(Zcl, " status: UnsupportedWrite (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::ResourceExhausted: |
| ChipLogProgress(Zcl, " status: ResourceExhausted (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecated8a: |
| ChipLogProgress(Zcl, " status: Deprecated8a (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::NotFound: |
| ChipLogProgress(Zcl, " status: NotFound (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::UnreportableAttribute: |
| ChipLogProgress(Zcl, " status: UnreportableAttribute (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::InvalidDataType: |
| ChipLogProgress(Zcl, " status: InvalidDataType (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecated8e: |
| ChipLogProgress(Zcl, " status: Deprecated8e (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::UnsupportedRead: |
| ChipLogProgress(Zcl, " status: UnsupportedRead (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecated90: |
| ChipLogProgress(Zcl, " status: Deprecated90 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecated91: |
| ChipLogProgress(Zcl, " status: Deprecated91 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Reserved92: |
| ChipLogProgress(Zcl, " status: Reserved92 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecated93: |
| ChipLogProgress(Zcl, " status: Deprecated93 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Timeout: |
| ChipLogProgress(Zcl, " status: Timeout (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Reserved95: |
| ChipLogProgress(Zcl, " status: Reserved95 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Reserved96: |
| ChipLogProgress(Zcl, " status: Reserved96 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Reserved97: |
| ChipLogProgress(Zcl, " status: Reserved97 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Reserved98: |
| ChipLogProgress(Zcl, " status: Reserved98 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Reserved99: |
| ChipLogProgress(Zcl, " status: Reserved99 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Reserved9a: |
| ChipLogProgress(Zcl, " status: Reserved9a (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::ConstraintError: |
| ChipLogProgress(Zcl, " status: ConstraintError (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Busy: |
| ChipLogProgress(Zcl, " status: Busy (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecatedc0: |
| ChipLogProgress(Zcl, " status: Deprecatedc0 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecatedc1: |
| ChipLogProgress(Zcl, " status: Deprecatedc1 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecatedc2: |
| ChipLogProgress(Zcl, " status: Deprecatedc2 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::UnsupportedCluster: |
| ChipLogProgress(Zcl, " status: UnsupportedCluster (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::Deprecatedc4: |
| ChipLogProgress(Zcl, " status: Deprecatedc4 (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::NoUpstreamSubscription: |
| ChipLogProgress(Zcl, " status: NoUpstreamSubscription (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| case Protocols::InteractionModel::ProtocolCode::InvalidArgument: |
| ChipLogProgress(Zcl, " status: InvalidArgument (0x%04" PRIx16 ")", chip::to_underlying(status)); |
| break; |
| default: |
| ChipLogError(Zcl, "Unknown status: 0x%04" PRIx16, chip::to_underlying(status)); |
| break; |
| } |
| } |
| |
| // Singleton instance of the callbacks manager |
| app::CHIPDeviceCallbacksMgr & gCallbacks = app::CHIPDeviceCallbacksMgr::GetInstance(); |
| |
| bool emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status) |
| { |
| ChipLogProgress(Zcl, "DefaultResponse:"); |
| ChipLogProgress(Zcl, " ClusterId: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); |
| ChipLogProgress(Zcl, " CommandId: " ChipLogFormatMEI, ChipLogValueMEI(commandId)); |
| LogStatus(status); |
| |
| GET_RESPONSE_CALLBACKS("emberAfDefaultResponseCallback"); |
| if (status == EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultSuccessCallback> * cb = |
| Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext); |
| } |
| else |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, static_cast<uint8_t>(status)); |
| } |
| |
| return true; |
| } |
| |
| bool IMDefaultResponseCallback(const chip::app::Command * commandObj, EmberAfStatus status) |
| { |
| ChipLogProgress(Zcl, "DefaultResponse:"); |
| ChipLogProgress(Zcl, " Transaction: %p", commandObj); |
| LogStatus(status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("emberAfDefaultResponseCallback"); |
| if (status == EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultSuccessCallback> * cb = |
| Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext); |
| } |
| else |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, static_cast<uint8_t>(status)); |
| } |
| |
| return true; |
| } |
| |
| bool IMWriteResponseCallback(const chip::app::WriteClient * writeClient, EmberAfStatus status) |
| { |
| ChipLogProgress(Zcl, "WriteResponse:"); |
| LogStatus(status); |
| |
| Callback::Cancelable * onSuccessCallback = nullptr; |
| Callback::Cancelable * onFailureCallback = nullptr; |
| NodeId sourceNodeId = writeClient->GetSourceNodeId(); |
| uint8_t seq = static_cast<uint8_t>(writeClient->GetAppIdentifier()); |
| CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceNodeId, seq, &onSuccessCallback, &onFailureCallback); |
| |
| if (CHIP_NO_ERROR != err) |
| { |
| if (onSuccessCallback == nullptr) |
| { |
| ChipLogDetail(Zcl, "%s: Missing success callback", __FUNCTION__); |
| } |
| |
| if (onFailureCallback == nullptr) |
| { |
| ChipLogDetail(Zcl, "%s: Missing failure callback", __FUNCTION__); |
| } |
| |
| return true; |
| } |
| |
| if (status == EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultSuccessCallback> * cb = |
| Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext); |
| } |
| else |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, static_cast<uint8_t>(status)); |
| } |
| |
| return true; |
| } |
| |
| bool IMReadReportAttributesResponseCallback(const app::ReadClient * apReadClient, const app::ClusterInfo & aPath, |
| TLV::TLVReader * apData, Protocols::InteractionModel::ProtocolCode status) |
| { |
| ChipLogProgress(Zcl, "ReadAttributesResponse:"); |
| ChipLogProgress(Zcl, " ClusterId: " ChipLogFormatMEI, ChipLogValueMEI(aPath.mClusterId)); |
| |
| Callback::Cancelable * onSuccessCallback = nullptr; |
| Callback::Cancelable * onFailureCallback = nullptr; |
| app::TLVDataFilter tlvFilter = nullptr; |
| NodeId sourceId = aPath.mNodeId; |
| // In CHIPClusters.cpp, we are using sequenceNumber as application identifier. |
| uint8_t sequenceNumber = static_cast<uint8_t>(apReadClient->GetAppIdentifier()); |
| CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceId, sequenceNumber, &onSuccessCallback, &onFailureCallback, &tlvFilter); |
| |
| if (CHIP_NO_ERROR != err) |
| { |
| if (onSuccessCallback == nullptr) |
| { |
| ChipLogDetail(Zcl, "%s: Missing success callback", __FUNCTION__); |
| } |
| |
| if (onFailureCallback == nullptr) |
| { |
| ChipLogDetail(Zcl, "%s: Missing failure callback", __FUNCTION__); |
| } |
| |
| if (tlvFilter == nullptr) |
| { |
| ChipLogDetail(Zcl, "%s: Missing TLV Data Filter", __FUNCTION__); |
| } |
| return true; |
| } |
| |
| ChipLogProgress(Zcl, " attributeId: " ChipLogFormatMEI, ChipLogValueMEI(aPath.mFieldId)); |
| LogIMStatus(status); |
| |
| if (status == Protocols::InteractionModel::ProtocolCode::Success && apData != nullptr) |
| { |
| ChipLogProgress(Zcl, " attribute TLV Type: 0x%02x", apData->GetType()); |
| tlvFilter(apData, onSuccessCallback, onFailureCallback); |
| } |
| else |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| // TODO: Should change failure callbacks to accept uint16 status code. |
| cb->mCall(cb->mContext, static_cast<uint8_t>(chip::to_underlying(status))); |
| } |
| |
| return true; |
| } |
| |
| bool emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen) |
| { |
| ChipLogProgress(Zcl, "WriteAttributesResponse:"); |
| ChipLogProgress(Zcl, " ClusterId: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); |
| |
| GET_RESPONSE_CALLBACKS("emberAfWriteAttributesResponseCallback"); |
| |
| // struct writeAttributeResponseRecord[] |
| while (messageLen) |
| { |
| CHECK_MESSAGE_LENGTH(1); |
| uint8_t status = chip::Encoding::Read8(message); // zclStatus |
| LogStatus(status); |
| |
| if (status == EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultSuccessCallback> * cb = |
| Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext); |
| } |
| else |
| { |
| CHECK_MESSAGE_LENGTH(4); |
| AttributeId attributeId = chip::Encoding::LittleEndian::Read32(message); // attribId |
| ChipLogProgress(Zcl, " attributeId: " ChipLogFormatMEI, ChipLogValueMEI(attributeId)); |
| // Silence unused var warning if progress logging is disabled. Note |
| // that we _do_ want to call Read32 unconditionally here, because we |
| // want to advance the 'message' pointer even if we don't use |
| // attributeId. |
| UNUSED_VAR(attributeId); |
| |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, status); |
| } |
| |
| // The current code is written matching the current API where there is a single attribute written |
| // per write command. So if multiple attributes are written at the same time, something is wrong |
| // somewhere. |
| if (messageLen) |
| { |
| ChipLogError(Zcl, "Multiple attributes written at the same time. Something went wrong."); |
| break; |
| } |
| } |
| |
| return true; |
| } |
| |
| bool emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen) |
| { |
| ChipLogProgress(Zcl, "ConfigureReportingResponseCallback:"); |
| ChipLogProgress(Zcl, " ClusterId: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); |
| |
| GET_RESPONSE_CALLBACKS("emberAfConfigureReportingResponseCallback"); |
| |
| // struct configureReportingResponseRecord[] |
| while (messageLen) |
| { |
| CHECK_MESSAGE_LENGTH(1); |
| uint8_t status = chip::Encoding::Read8(message); // zclStatus |
| LogStatus(status); |
| |
| if (status == EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultSuccessCallback> * cb = |
| Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext); |
| } |
| else |
| { |
| CHECK_MESSAGE_LENGTH(1); |
| uint8_t direction = chip::Encoding::Read8(message); // reportingRole |
| ChipLogProgress(Zcl, " direction: 0x%02x", direction); |
| // Silence unused var warning if progress logging is disabled. Note |
| // that we _do_ want to call Read8 unconditionally here, because we |
| // want to advance the 'message' pointer even if we don't use |
| // direction. |
| UNUSED_VAR(direction); |
| |
| CHECK_MESSAGE_LENGTH(4); |
| AttributeId attributeId = chip::Encoding::LittleEndian::Read32(message); // attribId |
| ChipLogProgress(Zcl, " attributeId: " ChipLogFormatMEI, ChipLogValueMEI(attributeId)); |
| // Silence unused var warning if progress logging is disabled. Note |
| // that we _do_ want to call Read32 unconditionally here, because we |
| // want to advance the 'message' pointer even if we don't use |
| // direction. |
| UNUSED_VAR(attributeId); |
| |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, status); |
| } |
| |
| // The current code is written matching the current API where there is a single attribute report |
| // per configure command. So if multiple attributes are configured at the same time, something is wrong |
| // somewhere. |
| if (messageLen) |
| { |
| ChipLogError(Zcl, "Multiple attributes reports configured at the same time. Something went wrong."); |
| break; |
| } |
| } |
| |
| return true; |
| } |
| |
| bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * message, uint16_t messageLen) |
| { |
| ChipLogProgress(Zcl, "ReadReportingConfigurationResponse:"); |
| ChipLogProgress(Zcl, " ClusterId: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); |
| |
| GET_RESPONSE_CALLBACKS("emberAfReadReportingConfigurationResponseCallback"); |
| |
| // struct readReportingConfigurationResponseRecord[] |
| while (messageLen) |
| { |
| CHECK_MESSAGE_LENGTH(1); |
| uint8_t direction = chip::Encoding::Read8(message); // reportingRole |
| ChipLogProgress(Zcl, " direction: 0x%02x", direction); |
| |
| CHECK_MESSAGE_LENGTH(4); |
| AttributeId attributeId = chip::Encoding::LittleEndian::Read32(message); // attribId |
| ChipLogProgress(Zcl, " attributeId: " ChipLogFormatMEI, ChipLogValueMEI(attributeId)); |
| // Silence unused var warning if progress logging is disabled. Note |
| // that we _do_ want to call Read32 unconditionally here, because we |
| // want to advance the 'message' pointer even if we don't use |
| // attributeId. |
| UNUSED_VAR(attributeId); |
| |
| if (direction == EMBER_ZCL_REPORTING_DIRECTION_REPORTED) |
| { |
| CHECK_MESSAGE_LENGTH(1); |
| uint8_t attributeType = chip::Encoding::Read8(message); // zclType |
| ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType); |
| // Silence unused var warning if progress logging is disabled. Note |
| // that we _do_ want to call Read8 unconditionally here, because we |
| // want to advance the 'message' pointer even if we don't use |
| // attributeType. |
| UNUSED_VAR(attributeType); |
| |
| CHECK_MESSAGE_LENGTH(2); |
| uint16_t minimumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16 |
| ChipLogProgress(Zcl, " minimumReportingInterval: %" PRIu16, minimumReportingInterval); |
| |
| CHECK_MESSAGE_LENGTH(2); |
| uint16_t maximumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16 |
| ChipLogProgress(Zcl, " maximumReportingInterval: %" PRIu16, maximumReportingInterval); |
| |
| // FIXME: unk is not supported yet. |
| |
| Callback::Callback<ReadReportingConfigurationReportedCallback> * cb = |
| Callback::Callback<ReadReportingConfigurationReportedCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, minimumReportingInterval, maximumReportingInterval); |
| } |
| else |
| { |
| CHECK_MESSAGE_LENGTH(2); |
| uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16 |
| ChipLogProgress(Zcl, " timeout: %" PRIu16, timeout); |
| |
| Callback::Callback<ReadReportingConfigurationReceivedCallback> * cb = |
| Callback::Callback<ReadReportingConfigurationReceivedCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, timeout); |
| } |
| } |
| |
| return true; |
| } |
| |
| bool emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * message, uint16_t messageLen, |
| bool extended) |
| { |
| ChipLogProgress(Zcl, "DiscoverAttributesResponse:"); |
| ChipLogProgress(Zcl, " ClusterId: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); |
| ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete); |
| ChipLogProgress(Zcl, " extended: %d", extended); |
| |
| GET_RESPONSE_CALLBACKS("emberAfDiscoverAttributesCallback"); |
| |
| // struct discoverAttributesResponseRecord[] |
| while (messageLen) |
| { |
| CHECK_MESSAGE_LENGTH(4); |
| AttributeId attributeId = chip::Encoding::LittleEndian::Read32(message); // attribId |
| ChipLogProgress(Zcl, " attributeId: " ChipLogFormatMEI, ChipLogValueMEI(attributeId)); |
| // Silence unused var warning if progress logging is disabled. Note |
| // that we _do_ want to call Read32 unconditionally here, because we |
| // want to advance the 'message' pointer even if we don't use |
| // attributeId. |
| UNUSED_VAR(attributeId); |
| |
| CHECK_MESSAGE_LENGTH(1); |
| uint8_t attributeType = chip::Encoding::Read8(message); // zclType |
| ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType); |
| // Silence unused var warning if progress logging is disabled. Note |
| // that we _do_ want to call Read8 unconditionally here, because we want |
| // to advance the 'message' pointer even if we don't use attributeType. |
| UNUSED_VAR(attributeType); |
| } |
| |
| Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext); |
| return true; |
| } |
| |
| bool emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete, |
| CommandId * commandIds, uint16_t commandIdCount) |
| { |
| ChipLogProgress(Zcl, "DiscoverCommandsGeneratedResponse:"); |
| ChipLogProgress(Zcl, " ClusterId: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); |
| ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode); |
| ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete); |
| ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount); |
| |
| for (uint16_t i = 0; i < commandIdCount; i++) |
| { |
| ChipLogProgress(Zcl, " commandId: " ChipLogFormatMEI, ChipLogValueMEI(*commandIds)); |
| commandIds++; |
| } |
| |
| GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback"); |
| Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext); |
| return true; |
| } |
| |
| bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete, |
| CommandId * commandIds, uint16_t commandIdCount) |
| { |
| ChipLogProgress(Zcl, "DiscoverCommandsReceivedResponse:"); |
| ChipLogProgress(Zcl, " ClusterId: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); |
| ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode); |
| ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete); |
| ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount); |
| |
| for (uint16_t i = 0; i < commandIdCount; i++) |
| { |
| ChipLogProgress(Zcl, " commandId: " ChipLogFormatMEI, ChipLogValueMEI(*commandIds)); |
| commandIds++; |
| } |
| |
| GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback"); |
| Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext); |
| return true; |
| } |
| |
| static EmberAfStatus PrepareListFromTLV(TLV::TLVReader * tlvData, const uint8_t *& message, uint16_t & messageLen) |
| { |
| CHIP_ERROR tlvError = CHIP_NO_ERROR; |
| TLV::TLVReader reader; |
| TLV::TLVType type; |
| reader.Init(*tlvData); |
| reader.EnterContainer(type); |
| tlvError = reader.Next(); |
| if (tlvError != CHIP_NO_ERROR && tlvError != CHIP_END_OF_TLV && chip::CanCastTo<uint16_t>(reader.GetLength())) |
| { |
| return EMBER_ZCL_STATUS_INVALID_VALUE; |
| } |
| if (tlvError == CHIP_NO_ERROR) |
| { |
| tlvError = reader.GetDataPtr(message); |
| messageLen = static_cast<uint16_t>(reader.GetLength()); |
| } |
| if (tlvError != CHIP_NO_ERROR) |
| { |
| return EMBER_ZCL_STATUS_INVALID_VALUE; |
| } |
| reader.ExitContainer(type); |
| return EMBER_ZCL_STATUS_SUCCESS; |
| } |
| |
| void ApplicationLauncherClusterApplicationLauncherListListAttributeFilter(TLV::TLVReader * tlvData, |
| Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| uint16_t data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i] = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| } |
| Callback::Callback<ApplicationLauncherApplicationLauncherListListAttributeCallback> * cb = |
| Callback::Callback<ApplicationLauncherApplicationLauncherListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void AudioOutputClusterAudioOutputListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _AudioOutputInfo data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].index = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].outputType = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 34, &data[i].name)); |
| messageLen = static_cast<uint16_t>(messageLen - 34); |
| message += 34; |
| } |
| Callback::Callback<AudioOutputAudioOutputListListAttributeCallback> * cb = |
| Callback::Callback<AudioOutputAudioOutputListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void ContentLauncherClusterAcceptsHeaderListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| chip::ByteSpan data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_STATUS_VOID(ReadByteSpan(message, messageLen, &data[i])); |
| uint16_t entryLength = static_cast<uint16_t>(data[i].size() + kByteSpanSizeLengthInBytes); |
| messageLen = static_cast<uint16_t>(messageLen - entryLength); |
| message += entryLength; |
| } |
| Callback::Callback<ContentLauncherAcceptsHeaderListListAttributeCallback> * cb = |
| Callback::Callback<ContentLauncherAcceptsHeaderListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void ContentLauncherClusterSupportedStreamingTypesListAttributeFilter(TLV::TLVReader * tlvData, |
| Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| uint8_t data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i] = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| } |
| Callback::Callback<ContentLauncherSupportedStreamingTypesListAttributeCallback> * cb = |
| Callback::Callback<ContentLauncherSupportedStreamingTypesListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void DescriptorClusterDeviceListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _DeviceType data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(4); |
| data[i].type = emberAfGetInt32u(message, 0, 4); |
| message += 4; |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].revision = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| } |
| Callback::Callback<DescriptorDeviceListListAttributeCallback> * cb = |
| Callback::Callback<DescriptorDeviceListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void DescriptorClusterServerListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| chip::ClusterId data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(4); |
| data[i] = emberAfGetInt32u(message, 0, 4); |
| message += 4; |
| } |
| Callback::Callback<DescriptorServerListListAttributeCallback> * cb = |
| Callback::Callback<DescriptorServerListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void DescriptorClusterClientListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| chip::ClusterId data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(4); |
| data[i] = emberAfGetInt32u(message, 0, 4); |
| message += 4; |
| } |
| Callback::Callback<DescriptorClientListListAttributeCallback> * cb = |
| Callback::Callback<DescriptorClientListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void DescriptorClusterPartsListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| chip::EndpointId data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i] = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| } |
| Callback::Callback<DescriptorPartsListListAttributeCallback> * cb = |
| Callback::Callback<DescriptorPartsListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void FixedLabelClusterLabelListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _LabelStruct data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_STATUS_VOID(ReadByteSpan(message, 18, &data[i].label)); |
| messageLen = static_cast<uint16_t>(messageLen - 18); |
| message += 18; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 18, &data[i].value)); |
| messageLen = static_cast<uint16_t>(messageLen - 18); |
| message += 18; |
| } |
| Callback::Callback<FixedLabelLabelListListAttributeCallback> * cb = |
| Callback::Callback<FixedLabelLabelListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void GeneralDiagnosticsClusterNetworkInterfacesListAttributeFilter(TLV::TLVReader * tlvData, |
| Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _NetworkInterfaceType data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_STATUS_VOID(ReadByteSpan(message, 34, &data[i].Name)); |
| messageLen = static_cast<uint16_t>(messageLen - 34); |
| message += 34; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].FabricConnected = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].OffPremiseServicesReachableIPv4 = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].OffPremiseServicesReachableIPv6 = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 10, &data[i].HardwareAddress)); |
| messageLen = static_cast<uint16_t>(messageLen - 10); |
| message += 10; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].Type = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| } |
| Callback::Callback<GeneralDiagnosticsNetworkInterfacesListAttributeCallback> * cb = |
| Callback::Callback<GeneralDiagnosticsNetworkInterfacesListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void GroupKeyManagementClusterGroupsListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _GroupState data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].VendorId = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].VendorGroupId = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].GroupKeySetIndex = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| } |
| Callback::Callback<GroupKeyManagementGroupsListAttributeCallback> * cb = |
| Callback::Callback<GroupKeyManagementGroupsListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void GroupKeyManagementClusterGroupKeysListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _GroupKey data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].VendorId = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].GroupKeyIndex = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 18, &data[i].GroupKeyRoot)); |
| messageLen = static_cast<uint16_t>(messageLen - 18); |
| message += 18; |
| CHECK_MESSAGE_LENGTH_VOID(8); |
| data[i].GroupKeyEpochStartTime = emberAfGetInt64u(message, 0, 8); |
| message += 8; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].GroupKeySecurityPolicy = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| } |
| Callback::Callback<GroupKeyManagementGroupKeysListAttributeCallback> * cb = |
| Callback::Callback<GroupKeyManagementGroupKeysListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void MediaInputClusterMediaInputListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _MediaInputInfo data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].index = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].inputType = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 34, &data[i].name)); |
| messageLen = static_cast<uint16_t>(messageLen - 34); |
| message += 34; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 34, &data[i].description)); |
| messageLen = static_cast<uint16_t>(messageLen - 34); |
| message += 34; |
| } |
| Callback::Callback<MediaInputMediaInputListListAttributeCallback> * cb = |
| Callback::Callback<MediaInputMediaInputListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void OperationalCredentialsClusterFabricsListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _FabricDescriptor data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(8); |
| data[i].FabricId = emberAfGetInt64u(message, 0, 8); |
| message += 8; |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].VendorId = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| CHECK_MESSAGE_LENGTH_VOID(8); |
| data[i].NodeId = emberAfGetInt64u(message, 0, 8); |
| message += 8; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 34, &data[i].Label)); |
| messageLen = static_cast<uint16_t>(messageLen - 34); |
| message += 34; |
| } |
| Callback::Callback<OperationalCredentialsFabricsListListAttributeCallback> * cb = |
| Callback::Callback<OperationalCredentialsFabricsListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void TvChannelClusterTvChannelListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _TvChannelInfo data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].majorNumber = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].minorNumber = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 34, &data[i].name)); |
| messageLen = static_cast<uint16_t>(messageLen - 34); |
| message += 34; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 34, &data[i].callSign)); |
| messageLen = static_cast<uint16_t>(messageLen - 34); |
| message += 34; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 34, &data[i].affiliateCallSign)); |
| messageLen = static_cast<uint16_t>(messageLen - 34); |
| message += 34; |
| } |
| Callback::Callback<TvChannelTvChannelListListAttributeCallback> * cb = |
| Callback::Callback<TvChannelTvChannelListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void TargetNavigatorClusterTargetNavigatorListListAttributeFilter(TLV::TLVReader * tlvData, |
| Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _NavigateTargetTargetInfo data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].identifier = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 34, &data[i].name)); |
| messageLen = static_cast<uint16_t>(messageLen - 34); |
| message += 34; |
| } |
| Callback::Callback<TargetNavigatorTargetNavigatorListListAttributeCallback> * cb = |
| Callback::Callback<TargetNavigatorTargetNavigatorListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void TestClusterClusterListInt8uListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| uint8_t data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i] = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| } |
| Callback::Callback<TestClusterListInt8uListAttributeCallback> * cb = |
| Callback::Callback<TestClusterListInt8uListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void TestClusterClusterListOctetStringListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| chip::ByteSpan data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_STATUS_VOID(ReadByteSpan(message, messageLen, &data[i])); |
| uint16_t entryLength = static_cast<uint16_t>(data[i].size() + kByteSpanSizeLengthInBytes); |
| messageLen = static_cast<uint16_t>(messageLen - entryLength); |
| message += entryLength; |
| } |
| Callback::Callback<TestClusterListOctetStringListAttributeCallback> * cb = |
| Callback::Callback<TestClusterListOctetStringListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void TestClusterClusterListStructOctetStringListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _TestListStructOctet data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(8); |
| data[i].fabricIndex = emberAfGetInt64u(message, 0, 8); |
| message += 8; |
| CHECK_STATUS_VOID(ReadByteSpan(message, 34, &data[i].operationalCert)); |
| messageLen = static_cast<uint16_t>(messageLen - 34); |
| message += 34; |
| } |
| Callback::Callback<TestClusterListStructOctetStringListAttributeCallback> * cb = |
| Callback::Callback<TestClusterListStructOctetStringListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void ThreadNetworkDiagnosticsClusterNeighborTableListListAttributeFilter(TLV::TLVReader * tlvData, |
| Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _NeighborTable data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(8); |
| data[i].ExtAddress = emberAfGetInt64u(message, 0, 8); |
| message += 8; |
| CHECK_MESSAGE_LENGTH_VOID(4); |
| data[i].Age = emberAfGetInt32u(message, 0, 4); |
| message += 4; |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].Rloc16 = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| CHECK_MESSAGE_LENGTH_VOID(4); |
| data[i].LinkFrameCounter = emberAfGetInt32u(message, 0, 4); |
| message += 4; |
| CHECK_MESSAGE_LENGTH_VOID(4); |
| data[i].MleFrameCounter = emberAfGetInt32u(message, 0, 4); |
| message += 4; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].LQI = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].AverageRssi = emberAfGetInt8s(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].LastRssi = emberAfGetInt8s(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].FrameErrorRate = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].MessageErrorRate = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].RxOnWhenIdle = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].FullThreadDevice = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].FullNetworkData = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].IsChild = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| } |
| Callback::Callback<ThreadNetworkDiagnosticsNeighborTableListListAttributeCallback> * cb = |
| Callback::Callback<ThreadNetworkDiagnosticsNeighborTableListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void ThreadNetworkDiagnosticsClusterRouteTableListListAttributeFilter(TLV::TLVReader * tlvData, |
| Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _RouteTable data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(8); |
| data[i].ExtAddress = emberAfGetInt64u(message, 0, 8); |
| message += 8; |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].Rloc16 = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].RouterId = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].NextHop = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].PathCost = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].LQIIn = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].LQIOut = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].Age = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].Allocated = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].LinkEstablished = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| } |
| Callback::Callback<ThreadNetworkDiagnosticsRouteTableListListAttributeCallback> * cb = |
| Callback::Callback<ThreadNetworkDiagnosticsRouteTableListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void ThreadNetworkDiagnosticsClusterSecurityPolicyListAttributeFilter(TLV::TLVReader * tlvData, |
| Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _SecurityPolicy data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| data[i].RotationTime = emberAfGetInt16u(message, 0, 2); |
| message += 2; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].Flags = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| } |
| Callback::Callback<ThreadNetworkDiagnosticsSecurityPolicyListAttributeCallback> * cb = |
| Callback::Callback<ThreadNetworkDiagnosticsSecurityPolicyListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void ThreadNetworkDiagnosticsClusterOperationalDatasetComponentsListAttributeFilter(TLV::TLVReader * tlvData, |
| Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| _OperationalDatasetComponents data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].ActiveTimestampPresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].PendingTimestampPresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].MasterKeyPresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].NetworkNamePresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].ExtendedPanIdPresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].MeshLocalPrefixPresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].DelayPresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].PanIdPresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].ChannelPresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].PskcPresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].SecurityPolicyPresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i].ChannelMaskPresent = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| } |
| Callback::Callback<ThreadNetworkDiagnosticsOperationalDatasetComponentsListAttributeCallback> * cb = |
| Callback::Callback<ThreadNetworkDiagnosticsOperationalDatasetComponentsListAttributeCallback>::FromCancelable( |
| onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| void ThreadNetworkDiagnosticsClusterActiveNetworkFaultsListListAttributeFilter(TLV::TLVReader * tlvData, |
| Callback::Cancelable * onSuccessCallback, |
| Callback::Cancelable * onFailureCallback) |
| { |
| // TODO: Add actual support for array and lists. |
| const uint8_t * message = nullptr; |
| uint16_t messageLen = 0; |
| EmberAfStatus res = PrepareListFromTLV(tlvData, message, messageLen); |
| if (res != EMBER_ZCL_STATUS_SUCCESS) |
| { |
| Callback::Callback<DefaultFailureCallback> * cb = |
| Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); |
| cb->mCall(cb->mContext, res); |
| return; |
| } |
| |
| CHECK_MESSAGE_LENGTH_VOID(2); |
| uint16_t count = chip::Encoding::LittleEndian::Read16(message); |
| uint8_t data[count]; |
| for (size_t i = 0; i < count; i++) |
| { |
| CHECK_MESSAGE_LENGTH_VOID(1); |
| data[i] = emberAfGetInt8u(message, 0, 1); |
| message += 1; |
| } |
| Callback::Callback<ThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallback> * cb = |
| Callback::Callback<ThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, count, data); |
| } |
| |
| bool emberAfAccountLoginClusterGetSetupPINResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t * setupPIN) |
| { |
| ChipLogProgress(Zcl, "GetSetupPINResponse:"); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " setupPIN: %.*s", setupPIN.size(), setupPIN.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("AccountLoginClusterGetSetupPINResponseCallback"); |
| |
| Callback::Callback<AccountLoginClusterGetSetupPINResponseCallback> * cb = |
| Callback::Callback<AccountLoginClusterGetSetupPINResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, setupPIN); |
| return true; |
| } |
| |
| bool emberAfApplicationLauncherClusterLaunchAppResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status, uint8_t * data) |
| { |
| ChipLogProgress(Zcl, "LaunchAppResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " data: %.*s", data.size(), data.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("ApplicationLauncherClusterLaunchAppResponseCallback"); |
| |
| Callback::Callback<ApplicationLauncherClusterLaunchAppResponseCallback> * cb = |
| Callback::Callback<ApplicationLauncherClusterLaunchAppResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, data); |
| return true; |
| } |
| |
| bool emberAfContentLauncherClusterLaunchContentResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t * data, uint8_t contentLaunchStatus) |
| { |
| ChipLogProgress(Zcl, "LaunchContentResponse:"); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " data: %.*s", data.size(), data.data()); |
| ChipLogProgress(Zcl, " contentLaunchStatus: %" PRIu8 "", contentLaunchStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("ContentLauncherClusterLaunchContentResponseCallback"); |
| |
| Callback::Callback<ContentLauncherClusterLaunchContentResponseCallback> * cb = |
| Callback::Callback<ContentLauncherClusterLaunchContentResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, data, contentLaunchStatus); |
| return true; |
| } |
| |
| bool emberAfContentLauncherClusterLaunchURLResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t * data, uint8_t contentLaunchStatus) |
| { |
| ChipLogProgress(Zcl, "LaunchURLResponse:"); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " data: %.*s", data.size(), data.data()); |
| ChipLogProgress(Zcl, " contentLaunchStatus: %" PRIu8 "", contentLaunchStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("ContentLauncherClusterLaunchURLResponseCallback"); |
| |
| Callback::Callback<ContentLauncherClusterLaunchURLResponseCallback> * cb = |
| Callback::Callback<ContentLauncherClusterLaunchURLResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, data, contentLaunchStatus); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterClearAllPinsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "ClearAllPinsResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterClearAllPinsResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterClearAllPinsResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterClearAllPinsResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterClearAllRfidsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "ClearAllRfidsResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterClearAllRfidsResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterClearHolidayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "ClearHolidayScheduleResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterClearHolidayScheduleResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterClearPinResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "ClearPinResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterClearPinResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterClearPinResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterClearPinResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterClearRfidResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "ClearRfidResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterClearRfidResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterClearRfidResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterClearRfidResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "ClearWeekdayScheduleResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterClearWeekdayScheduleResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterClearYeardayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "ClearYeardayScheduleResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterClearYeardayScheduleResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterGetHolidayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t scheduleId, uint8_t status, uint32_t localStartTime, |
| uint32_t localEndTime, uint8_t operatingModeDuringHoliday) |
| { |
| ChipLogProgress(Zcl, "GetHolidayScheduleResponse:"); |
| ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " localStartTime: %" PRIu32 "", localStartTime); |
| ChipLogProgress(Zcl, " localEndTime: %" PRIu32 "", localEndTime); |
| ChipLogProgress(Zcl, " operatingModeDuringHoliday: %" PRIu8 "", operatingModeDuringHoliday); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterGetHolidayScheduleResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, scheduleId, status, localStartTime, localEndTime, operatingModeDuringHoliday); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterGetLogRecordResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint16_t logEntryId, uint32_t timestamp, uint8_t eventType, uint8_t source, |
| uint8_t eventIdOrAlarmCode, uint16_t userId, uint8_t * pin) |
| { |
| ChipLogProgress(Zcl, "GetLogRecordResponse:"); |
| ChipLogProgress(Zcl, " logEntryId: %" PRIu16 "", logEntryId); |
| ChipLogProgress(Zcl, " timestamp: %" PRIu32 "", timestamp); |
| ChipLogProgress(Zcl, " eventType: %" PRIu8 "", eventType); |
| ChipLogProgress(Zcl, " source: %" PRIu8 "", source); |
| ChipLogProgress(Zcl, " eventIdOrAlarmCode: %" PRIu8 "", eventIdOrAlarmCode); |
| ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " pin: %.*s", pin.size(), pin.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterGetLogRecordResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterGetLogRecordResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterGetLogRecordResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, logEntryId, timestamp, eventType, source, eventIdOrAlarmCode, userId, pin); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterGetPinResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint16_t userId, |
| uint8_t userStatus, uint8_t userType, uint8_t * pin) |
| { |
| ChipLogProgress(Zcl, "GetPinResponse:"); |
| ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId); |
| ChipLogProgress(Zcl, " userStatus: %" PRIu8 "", userStatus); |
| ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " pin: %.*s", pin.size(), pin.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterGetPinResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterGetPinResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterGetPinResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, userId, userStatus, userType, pin); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterGetRfidResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * rfid) |
| { |
| ChipLogProgress(Zcl, "GetRfidResponse:"); |
| ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId); |
| ChipLogProgress(Zcl, " userStatus: %" PRIu8 "", userStatus); |
| ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " rfid: %.*s", rfid.size(), rfid.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterGetRfidResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterGetRfidResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterGetRfidResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, userId, userStatus, userType, rfid); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterGetUserTypeResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint16_t userId, uint8_t userType) |
| { |
| ChipLogProgress(Zcl, "GetUserTypeResponse:"); |
| ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId); |
| ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterGetUserTypeResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterGetUserTypeResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterGetUserTypeResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, userId, userType); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t scheduleId, uint16_t userId, uint8_t status, uint8_t daysMask, |
| uint8_t startHour, uint8_t startMinute, uint8_t endHour, |
| uint8_t endMinute) |
| { |
| ChipLogProgress(Zcl, "GetWeekdayScheduleResponse:"); |
| ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId); |
| ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " daysMask: %" PRIu8 "", daysMask); |
| ChipLogProgress(Zcl, " startHour: %" PRIu8 "", startHour); |
| ChipLogProgress(Zcl, " startMinute: %" PRIu8 "", startMinute); |
| ChipLogProgress(Zcl, " endHour: %" PRIu8 "", endHour); |
| ChipLogProgress(Zcl, " endMinute: %" PRIu8 "", endMinute); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterGetWeekdayScheduleResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, scheduleId, userId, status, daysMask, startHour, startMinute, endHour, endMinute); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterGetYeardayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t scheduleId, uint16_t userId, uint8_t status, |
| uint32_t localStartTime, uint32_t localEndTime) |
| { |
| ChipLogProgress(Zcl, "GetYeardayScheduleResponse:"); |
| ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId); |
| ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " localStartTime: %" PRIu32 "", localStartTime); |
| ChipLogProgress(Zcl, " localEndTime: %" PRIu32 "", localEndTime); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterGetYeardayScheduleResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, scheduleId, userId, status, localStartTime, localEndTime); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterLockDoorResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "LockDoorResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterLockDoorResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterLockDoorResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterLockDoorResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterSetHolidayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "SetHolidayScheduleResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterSetHolidayScheduleResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterSetPinResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status) |
| { |
| ChipLogProgress(Zcl, "SetPinResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterSetPinResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterSetPinResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterSetPinResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterSetRfidResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status) |
| { |
| ChipLogProgress(Zcl, "SetRfidResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterSetRfidResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterSetRfidResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterSetRfidResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterSetUserTypeResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "SetUserTypeResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterSetUserTypeResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterSetUserTypeResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterSetUserTypeResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "SetWeekdayScheduleResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterSetWeekdayScheduleResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterSetYeardayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "SetYeardayScheduleResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterSetYeardayScheduleResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterUnlockDoorResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "UnlockDoorResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterUnlockDoorResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterUnlockDoorResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterUnlockDoorResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "UnlockWithTimeoutResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("DoorLockClusterUnlockWithTimeoutResponseCallback"); |
| |
| Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback> * cb = |
| Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfGeneralCommissioningClusterArmFailSafeResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t errorCode, uint8_t * debugText) |
| { |
| ChipLogProgress(Zcl, "ArmFailSafeResponse:"); |
| ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " debugText: %.*s", debugText.size(), debugText.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("GeneralCommissioningClusterArmFailSafeResponseCallback"); |
| |
| Callback::Callback<GeneralCommissioningClusterArmFailSafeResponseCallback> * cb = |
| Callback::Callback<GeneralCommissioningClusterArmFailSafeResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, errorCode, debugText); |
| return true; |
| } |
| |
| bool emberAfGeneralCommissioningClusterCommissioningCompleteResponseCallback(chip::EndpointId endpoint, |
| chip::app::CommandSender * commandObj, |
| uint8_t errorCode, uint8_t * debugText) |
| { |
| ChipLogProgress(Zcl, "CommissioningCompleteResponse:"); |
| ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " debugText: %.*s", debugText.size(), debugText.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("GeneralCommissioningClusterCommissioningCompleteResponseCallback"); |
| |
| Callback::Callback<GeneralCommissioningClusterCommissioningCompleteResponseCallback> * cb = |
| Callback::Callback<GeneralCommissioningClusterCommissioningCompleteResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, errorCode, debugText); |
| return true; |
| } |
| |
| bool emberAfGeneralCommissioningClusterSetRegulatoryConfigResponseCallback(chip::EndpointId endpoint, |
| chip::app::CommandSender * commandObj, uint8_t errorCode, |
| uint8_t * debugText) |
| { |
| ChipLogProgress(Zcl, "SetRegulatoryConfigResponse:"); |
| ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " debugText: %.*s", debugText.size(), debugText.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("GeneralCommissioningClusterSetRegulatoryConfigResponseCallback"); |
| |
| Callback::Callback<GeneralCommissioningClusterSetRegulatoryConfigResponseCallback> * cb = |
| Callback::Callback<GeneralCommissioningClusterSetRegulatoryConfigResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, errorCode, debugText); |
| return true; |
| } |
| |
| bool emberAfGroupsClusterAddGroupResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status, |
| uint16_t groupId) |
| { |
| ChipLogProgress(Zcl, "AddGroupResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("GroupsClusterAddGroupResponseCallback"); |
| |
| Callback::Callback<GroupsClusterAddGroupResponseCallback> * cb = |
| Callback::Callback<GroupsClusterAddGroupResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, groupId); |
| return true; |
| } |
| |
| bool emberAfGroupsClusterGetGroupMembershipResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t capacity, uint8_t groupCount, |
| /* TYPE WARNING: array array defaults to */ uint8_t * groupList) |
| { |
| ChipLogProgress(Zcl, "GetGroupMembershipResponse:"); |
| ChipLogProgress(Zcl, " capacity: %" PRIu8 "", capacity); |
| ChipLogProgress(Zcl, " groupCount: %" PRIu8 "", groupCount); |
| ChipLogProgress(Zcl, " groupList: %p", groupList); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("GroupsClusterGetGroupMembershipResponseCallback"); |
| |
| Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback> * cb = |
| Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, capacity, groupCount, groupList); |
| return true; |
| } |
| |
| bool emberAfGroupsClusterRemoveGroupResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status, uint16_t groupId) |
| { |
| ChipLogProgress(Zcl, "RemoveGroupResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("GroupsClusterRemoveGroupResponseCallback"); |
| |
| Callback::Callback<GroupsClusterRemoveGroupResponseCallback> * cb = |
| Callback::Callback<GroupsClusterRemoveGroupResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, groupId); |
| return true; |
| } |
| |
| bool emberAfGroupsClusterViewGroupResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status, |
| uint16_t groupId, uint8_t * groupName) |
| { |
| ChipLogProgress(Zcl, "ViewGroupResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " groupName: %.*s", groupName.size(), groupName.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("GroupsClusterViewGroupResponseCallback"); |
| |
| Callback::Callback<GroupsClusterViewGroupResponseCallback> * cb = |
| Callback::Callback<GroupsClusterViewGroupResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, groupId, groupName); |
| return true; |
| } |
| |
| bool emberAfIdentifyClusterIdentifyQueryResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint16_t timeout) |
| { |
| ChipLogProgress(Zcl, "IdentifyQueryResponse:"); |
| ChipLogProgress(Zcl, " timeout: %" PRIu16 "", timeout); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("IdentifyClusterIdentifyQueryResponseCallback"); |
| |
| Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback> * cb = |
| Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, timeout); |
| return true; |
| } |
| |
| bool emberAfKeypadInputClusterSendKeyResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status) |
| { |
| ChipLogProgress(Zcl, "SendKeyResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("KeypadInputClusterSendKeyResponseCallback"); |
| |
| Callback::Callback<KeypadInputClusterSendKeyResponseCallback> * cb = |
| Callback::Callback<KeypadInputClusterSendKeyResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status); |
| return true; |
| } |
| |
| bool emberAfMediaPlaybackClusterMediaFastForwardResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t mediaPlaybackStatus) |
| { |
| ChipLogProgress(Zcl, "MediaFastForwardResponse:"); |
| ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaFastForwardResponseCallback"); |
| |
| Callback::Callback<MediaPlaybackClusterMediaFastForwardResponseCallback> * cb = |
| Callback::Callback<MediaPlaybackClusterMediaFastForwardResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, mediaPlaybackStatus); |
| return true; |
| } |
| |
| bool emberAfMediaPlaybackClusterMediaNextResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t mediaPlaybackStatus) |
| { |
| ChipLogProgress(Zcl, "MediaNextResponse:"); |
| ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaNextResponseCallback"); |
| |
| Callback::Callback<MediaPlaybackClusterMediaNextResponseCallback> * cb = |
| Callback::Callback<MediaPlaybackClusterMediaNextResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, mediaPlaybackStatus); |
| return true; |
| } |
| |
| bool emberAfMediaPlaybackClusterMediaPauseResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t mediaPlaybackStatus) |
| { |
| ChipLogProgress(Zcl, "MediaPauseResponse:"); |
| ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaPauseResponseCallback"); |
| |
| Callback::Callback<MediaPlaybackClusterMediaPauseResponseCallback> * cb = |
| Callback::Callback<MediaPlaybackClusterMediaPauseResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, mediaPlaybackStatus); |
| return true; |
| } |
| |
| bool emberAfMediaPlaybackClusterMediaPlayResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t mediaPlaybackStatus) |
| { |
| ChipLogProgress(Zcl, "MediaPlayResponse:"); |
| ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaPlayResponseCallback"); |
| |
| Callback::Callback<MediaPlaybackClusterMediaPlayResponseCallback> * cb = |
| Callback::Callback<MediaPlaybackClusterMediaPlayResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, mediaPlaybackStatus); |
| return true; |
| } |
| |
| bool emberAfMediaPlaybackClusterMediaPreviousResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t mediaPlaybackStatus) |
| { |
| ChipLogProgress(Zcl, "MediaPreviousResponse:"); |
| ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaPreviousResponseCallback"); |
| |
| Callback::Callback<MediaPlaybackClusterMediaPreviousResponseCallback> * cb = |
| Callback::Callback<MediaPlaybackClusterMediaPreviousResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, mediaPlaybackStatus); |
| return true; |
| } |
| |
| bool emberAfMediaPlaybackClusterMediaRewindResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t mediaPlaybackStatus) |
| { |
| ChipLogProgress(Zcl, "MediaRewindResponse:"); |
| ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaRewindResponseCallback"); |
| |
| Callback::Callback<MediaPlaybackClusterMediaRewindResponseCallback> * cb = |
| Callback::Callback<MediaPlaybackClusterMediaRewindResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, mediaPlaybackStatus); |
| return true; |
| } |
| |
| bool emberAfMediaPlaybackClusterMediaSeekResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t mediaPlaybackStatus) |
| { |
| ChipLogProgress(Zcl, "MediaSeekResponse:"); |
| ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaSeekResponseCallback"); |
| |
| Callback::Callback<MediaPlaybackClusterMediaSeekResponseCallback> * cb = |
| Callback::Callback<MediaPlaybackClusterMediaSeekResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, mediaPlaybackStatus); |
| return true; |
| } |
| |
| bool emberAfMediaPlaybackClusterMediaSkipBackwardResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t mediaPlaybackStatus) |
| { |
| ChipLogProgress(Zcl, "MediaSkipBackwardResponse:"); |
| ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaSkipBackwardResponseCallback"); |
| |
| Callback::Callback<MediaPlaybackClusterMediaSkipBackwardResponseCallback> * cb = |
| Callback::Callback<MediaPlaybackClusterMediaSkipBackwardResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, mediaPlaybackStatus); |
| return true; |
| } |
| |
| bool emberAfMediaPlaybackClusterMediaSkipForwardResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t mediaPlaybackStatus) |
| { |
| ChipLogProgress(Zcl, "MediaSkipForwardResponse:"); |
| ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaSkipForwardResponseCallback"); |
| |
| Callback::Callback<MediaPlaybackClusterMediaSkipForwardResponseCallback> * cb = |
| Callback::Callback<MediaPlaybackClusterMediaSkipForwardResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, mediaPlaybackStatus); |
| return true; |
| } |
| |
| bool emberAfMediaPlaybackClusterMediaStartOverResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t mediaPlaybackStatus) |
| { |
| ChipLogProgress(Zcl, "MediaStartOverResponse:"); |
| ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaStartOverResponseCallback"); |
| |
| Callback::Callback<MediaPlaybackClusterMediaStartOverResponseCallback> * cb = |
| Callback::Callback<MediaPlaybackClusterMediaStartOverResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, mediaPlaybackStatus); |
| return true; |
| } |
| |
| bool emberAfMediaPlaybackClusterMediaStopResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t mediaPlaybackStatus) |
| { |
| ChipLogProgress(Zcl, "MediaStopResponse:"); |
| ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaStopResponseCallback"); |
| |
| Callback::Callback<MediaPlaybackClusterMediaStopResponseCallback> * cb = |
| Callback::Callback<MediaPlaybackClusterMediaStopResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, mediaPlaybackStatus); |
| return true; |
| } |
| |
| bool emberAfNetworkCommissioningClusterAddThreadNetworkResponseCallback(chip::EndpointId endpoint, |
| chip::app::CommandSender * commandObj, uint8_t errorCode, |
| uint8_t * debugText) |
| { |
| ChipLogProgress(Zcl, "AddThreadNetworkResponse:"); |
| ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " debugText: %.*s", debugText.size(), debugText.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("NetworkCommissioningClusterAddThreadNetworkResponseCallback"); |
| |
| Callback::Callback<NetworkCommissioningClusterAddThreadNetworkResponseCallback> * cb = |
| Callback::Callback<NetworkCommissioningClusterAddThreadNetworkResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, errorCode, debugText); |
| return true; |
| } |
| |
| bool emberAfNetworkCommissioningClusterAddWiFiNetworkResponseCallback(chip::EndpointId endpoint, |
| chip::app::CommandSender * commandObj, uint8_t errorCode, |
| uint8_t * debugText) |
| { |
| ChipLogProgress(Zcl, "AddWiFiNetworkResponse:"); |
| ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " debugText: %.*s", debugText.size(), debugText.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("NetworkCommissioningClusterAddWiFiNetworkResponseCallback"); |
| |
| Callback::Callback<NetworkCommissioningClusterAddWiFiNetworkResponseCallback> * cb = |
| Callback::Callback<NetworkCommissioningClusterAddWiFiNetworkResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, errorCode, debugText); |
| return true; |
| } |
| |
| bool emberAfNetworkCommissioningClusterDisableNetworkResponseCallback(chip::EndpointId endpoint, |
| chip::app::CommandSender * commandObj, uint8_t errorCode, |
| uint8_t * debugText) |
| { |
| ChipLogProgress(Zcl, "DisableNetworkResponse:"); |
| ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " debugText: %.*s", debugText.size(), debugText.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("NetworkCommissioningClusterDisableNetworkResponseCallback"); |
| |
| Callback::Callback<NetworkCommissioningClusterDisableNetworkResponseCallback> * cb = |
| Callback::Callback<NetworkCommissioningClusterDisableNetworkResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, errorCode, debugText); |
| return true; |
| } |
| |
| bool emberAfNetworkCommissioningClusterEnableNetworkResponseCallback(chip::EndpointId endpoint, |
| chip::app::CommandSender * commandObj, uint8_t errorCode, |
| uint8_t * debugText) |
| { |
| ChipLogProgress(Zcl, "EnableNetworkResponse:"); |
| ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " debugText: %.*s", debugText.size(), debugText.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("NetworkCommissioningClusterEnableNetworkResponseCallback"); |
| |
| Callback::Callback<NetworkCommissioningClusterEnableNetworkResponseCallback> * cb = |
| Callback::Callback<NetworkCommissioningClusterEnableNetworkResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, errorCode, debugText); |
| return true; |
| } |
| |
| bool emberAfNetworkCommissioningClusterRemoveNetworkResponseCallback(chip::EndpointId endpoint, |
| chip::app::CommandSender * commandObj, uint8_t errorCode, |
| uint8_t * debugText) |
| { |
| ChipLogProgress(Zcl, "RemoveNetworkResponse:"); |
| ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " debugText: %.*s", debugText.size(), debugText.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("NetworkCommissioningClusterRemoveNetworkResponseCallback"); |
| |
| Callback::Callback<NetworkCommissioningClusterRemoveNetworkResponseCallback> * cb = |
| Callback::Callback<NetworkCommissioningClusterRemoveNetworkResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, errorCode, debugText); |
| return true; |
| } |
| |
| bool emberAfNetworkCommissioningClusterScanNetworksResponseCallback( |
| chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t errorCode, uint8_t * debugText, |
| /* TYPE WARNING: array array defaults to */ uint8_t * wifiScanResults, |
| /* TYPE WARNING: array array defaults to */ uint8_t * threadScanResults) |
| { |
| ChipLogProgress(Zcl, "ScanNetworksResponse:"); |
| ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " debugText: %.*s", debugText.size(), debugText.data()); |
| ChipLogProgress(Zcl, " wifiScanResults: %p", wifiScanResults); |
| ChipLogProgress(Zcl, " threadScanResults: %p", threadScanResults); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("NetworkCommissioningClusterScanNetworksResponseCallback"); |
| |
| Callback::Callback<NetworkCommissioningClusterScanNetworksResponseCallback> * cb = |
| Callback::Callback<NetworkCommissioningClusterScanNetworksResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, errorCode, debugText, wifiScanResults, threadScanResults); |
| return true; |
| } |
| |
| bool emberAfNetworkCommissioningClusterUpdateThreadNetworkResponseCallback(chip::EndpointId endpoint, |
| chip::app::CommandSender * commandObj, uint8_t errorCode, |
| uint8_t * debugText) |
| { |
| ChipLogProgress(Zcl, "UpdateThreadNetworkResponse:"); |
| ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " debugText: %.*s", debugText.size(), debugText.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("NetworkCommissioningClusterUpdateThreadNetworkResponseCallback"); |
| |
| Callback::Callback<NetworkCommissioningClusterUpdateThreadNetworkResponseCallback> * cb = |
| Callback::Callback<NetworkCommissioningClusterUpdateThreadNetworkResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, errorCode, debugText); |
| return true; |
| } |
| |
| bool emberAfNetworkCommissioningClusterUpdateWiFiNetworkResponseCallback(chip::EndpointId endpoint, |
| chip::app::CommandSender * commandObj, uint8_t errorCode, |
| uint8_t * debugText) |
| { |
| ChipLogProgress(Zcl, "UpdateWiFiNetworkResponse:"); |
| ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " debugText: %.*s", debugText.size(), debugText.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("NetworkCommissioningClusterUpdateWiFiNetworkResponseCallback"); |
| |
| Callback::Callback<NetworkCommissioningClusterUpdateWiFiNetworkResponseCallback> * cb = |
| Callback::Callback<NetworkCommissioningClusterUpdateWiFiNetworkResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, errorCode, debugText); |
| return true; |
| } |
| |
| bool emberAfOtaSoftwareUpdateProviderClusterApplyUpdateRequestResponseCallback(chip::EndpointId endpoint, |
| chip::app::CommandSender * commandObj, |
| uint8_t action, uint32_t delayedActionTime) |
| { |
| ChipLogProgress(Zcl, "ApplyUpdateRequestResponse:"); |
| ChipLogProgress(Zcl, " action: %" PRIu8 "", action); |
| ChipLogProgress(Zcl, " delayedActionTime: %" PRIu32 "", delayedActionTime); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("OtaSoftwareUpdateProviderClusterApplyUpdateRequestResponseCallback"); |
| |
| Callback::Callback<OtaSoftwareUpdateProviderClusterApplyUpdateRequestResponseCallback> * cb = |
| Callback::Callback<OtaSoftwareUpdateProviderClusterApplyUpdateRequestResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, action, delayedActionTime); |
| return true; |
| } |
| |
| bool emberAfOtaSoftwareUpdateProviderClusterQueryImageResponseCallback(chip::EndpointId endpoint, |
| chip::app::CommandSender * commandObj, uint8_t status, |
| uint32_t delayedActionTime, uint8_t * imageURI, |
| uint32_t softwareVersion, chip::ByteSpan updateToken, |
| bool userConsentNeeded, chip::ByteSpan metadataForRequestor) |
| { |
| ChipLogProgress(Zcl, "QueryImageResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " delayedActionTime: %" PRIu32 "", delayedActionTime); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " imageURI: %.*s", imageURI.size(), imageURI.data()); |
| ChipLogProgress(Zcl, " softwareVersion: %" PRIu32 "", softwareVersion); |
| ChipLogProgress(Zcl, " updateToken: %zu", updateToken.size()); |
| ChipLogProgress(Zcl, " userConsentNeeded: %d", userConsentNeeded); |
| ChipLogProgress(Zcl, " metadataForRequestor: %zu", metadataForRequestor.size()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("OtaSoftwareUpdateProviderClusterQueryImageResponseCallback"); |
| |
| Callback::Callback<OtaSoftwareUpdateProviderClusterQueryImageResponseCallback> * cb = |
| Callback::Callback<OtaSoftwareUpdateProviderClusterQueryImageResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, delayedActionTime, imageURI, softwareVersion, updateToken, userConsentNeeded, |
| metadataForRequestor); |
| return true; |
| } |
| |
| bool emberAfOperationalCredentialsClusterNOCResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t StatusCode, uint8_t FabricIndex, chip::ByteSpan DebugText) |
| { |
| ChipLogProgress(Zcl, "NOCResponse:"); |
| ChipLogProgress(Zcl, " StatusCode: %" PRIu8 "", StatusCode); |
| ChipLogProgress(Zcl, " FabricIndex: %" PRIu8 "", FabricIndex); |
| ChipLogProgress(Zcl, " DebugText: %zu", DebugText.size()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("OperationalCredentialsClusterNOCResponseCallback"); |
| |
| Callback::Callback<OperationalCredentialsClusterNOCResponseCallback> * cb = |
| Callback::Callback<OperationalCredentialsClusterNOCResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, StatusCode, FabricIndex, DebugText); |
| return true; |
| } |
| |
| bool emberAfOperationalCredentialsClusterOpCSRResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| chip::ByteSpan NOCSRElements, chip::ByteSpan AttestationSignature) |
| { |
| ChipLogProgress(Zcl, "OpCSRResponse:"); |
| ChipLogProgress(Zcl, " NOCSRElements: %zu", NOCSRElements.size()); |
| ChipLogProgress(Zcl, " AttestationSignature: %zu", AttestationSignature.size()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("OperationalCredentialsClusterOpCSRResponseCallback"); |
| |
| Callback::Callback<OperationalCredentialsClusterOpCSRResponseCallback> * cb = |
| Callback::Callback<OperationalCredentialsClusterOpCSRResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, NOCSRElements, AttestationSignature); |
| return true; |
| } |
| |
| bool emberAfOperationalCredentialsClusterSetFabricResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| chip::FabricId FabricId) |
| { |
| ChipLogProgress(Zcl, "SetFabricResponse:"); |
| ChipLogProgress(Zcl, " FabricId: %" PRIu64 "", FabricId); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("OperationalCredentialsClusterSetFabricResponseCallback"); |
| |
| Callback::Callback<OperationalCredentialsClusterSetFabricResponseCallback> * cb = |
| Callback::Callback<OperationalCredentialsClusterSetFabricResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, FabricId); |
| return true; |
| } |
| |
| bool emberAfScenesClusterAddSceneResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status, |
| uint16_t groupId, uint8_t sceneId) |
| { |
| ChipLogProgress(Zcl, "AddSceneResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId); |
| ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("ScenesClusterAddSceneResponseCallback"); |
| |
| Callback::Callback<ScenesClusterAddSceneResponseCallback> * cb = |
| Callback::Callback<ScenesClusterAddSceneResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, groupId, sceneId); |
| return true; |
| } |
| |
| bool emberAfScenesClusterGetSceneMembershipResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status, uint8_t capacity, uint16_t groupId, uint8_t sceneCount, |
| /* TYPE WARNING: array array defaults to */ uint8_t * sceneList) |
| { |
| ChipLogProgress(Zcl, "GetSceneMembershipResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " capacity: %" PRIu8 "", capacity); |
| ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId); |
| ChipLogProgress(Zcl, " sceneCount: %" PRIu8 "", sceneCount); |
| ChipLogProgress(Zcl, " sceneList: %p", sceneList); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("ScenesClusterGetSceneMembershipResponseCallback"); |
| |
| Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback> * cb = |
| Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, capacity, groupId, sceneCount, sceneList); |
| return true; |
| } |
| |
| bool emberAfScenesClusterRemoveAllScenesResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status, uint16_t groupId) |
| { |
| ChipLogProgress(Zcl, "RemoveAllScenesResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("ScenesClusterRemoveAllScenesResponseCallback"); |
| |
| Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback> * cb = |
| Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, groupId); |
| return true; |
| } |
| |
| bool emberAfScenesClusterRemoveSceneResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status, uint16_t groupId, uint8_t sceneId) |
| { |
| ChipLogProgress(Zcl, "RemoveSceneResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId); |
| ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("ScenesClusterRemoveSceneResponseCallback"); |
| |
| Callback::Callback<ScenesClusterRemoveSceneResponseCallback> * cb = |
| Callback::Callback<ScenesClusterRemoveSceneResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, groupId, sceneId); |
| return true; |
| } |
| |
| bool emberAfScenesClusterStoreSceneResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status, uint16_t groupId, uint8_t sceneId) |
| { |
| ChipLogProgress(Zcl, "StoreSceneResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId); |
| ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("ScenesClusterStoreSceneResponseCallback"); |
| |
| Callback::Callback<ScenesClusterStoreSceneResponseCallback> * cb = |
| Callback::Callback<ScenesClusterStoreSceneResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, groupId, sceneId); |
| return true; |
| } |
| |
| bool emberAfScenesClusterViewSceneResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status, |
| uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName, |
| /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets) |
| { |
| ChipLogProgress(Zcl, "ViewSceneResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId); |
| ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId); |
| ChipLogProgress(Zcl, " transitionTime: %" PRIu16 "", transitionTime); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " sceneName: %.*s", sceneName.size(), sceneName.data()); |
| ChipLogProgress(Zcl, " extensionFieldSets: %p", extensionFieldSets); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("ScenesClusterViewSceneResponseCallback"); |
| |
| Callback::Callback<ScenesClusterViewSceneResponseCallback> * cb = |
| Callback::Callback<ScenesClusterViewSceneResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, groupId, sceneId, transitionTime, sceneName, extensionFieldSets); |
| return true; |
| } |
| |
| bool emberAfTvChannelClusterChangeChannelResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch, |
| uint8_t ErrorType) |
| { |
| ChipLogProgress(Zcl, "ChangeChannelResponse:"); |
| ChipLogProgress(Zcl, " ChannelMatch: %p", ChannelMatch); |
| ChipLogProgress(Zcl, " ErrorType: %" PRIu8 "", ErrorType); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("TvChannelClusterChangeChannelResponseCallback"); |
| |
| Callback::Callback<TvChannelClusterChangeChannelResponseCallback> * cb = |
| Callback::Callback<TvChannelClusterChangeChannelResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, ChannelMatch, ErrorType); |
| return true; |
| } |
| |
| bool emberAfTargetNavigatorClusterNavigateTargetResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t status, uint8_t * data) |
| { |
| ChipLogProgress(Zcl, "NavigateTargetResponse:"); |
| ChipLogProgress(Zcl, " status: %" PRIu8 "", status); |
| // Currently the generated code emits `uint8_t *` for CHAR_STRING, it needs to emits chip::ByteSpan |
| // ChipLogProgress(Zcl, " data: %.*s", data.size(), data.data()); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("TargetNavigatorClusterNavigateTargetResponseCallback"); |
| |
| Callback::Callback<TargetNavigatorClusterNavigateTargetResponseCallback> * cb = |
| Callback::Callback<TargetNavigatorClusterNavigateTargetResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, status, data); |
| return true; |
| } |
| |
| bool emberAfTestClusterClusterTestAddArgumentsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t returnValue) |
| { |
| ChipLogProgress(Zcl, "TestAddArgumentsResponse:"); |
| ChipLogProgress(Zcl, " returnValue: %" PRIu8 "", returnValue); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("TestClusterClusterTestAddArgumentsResponseCallback"); |
| |
| Callback::Callback<TestClusterClusterTestAddArgumentsResponseCallback> * cb = |
| Callback::Callback<TestClusterClusterTestAddArgumentsResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, returnValue); |
| return true; |
| } |
| |
| bool emberAfTestClusterClusterTestSpecificResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, |
| uint8_t returnValue) |
| { |
| ChipLogProgress(Zcl, "TestSpecificResponse:"); |
| ChipLogProgress(Zcl, " returnValue: %" PRIu8 "", returnValue); |
| |
| GET_CLUSTER_RESPONSE_CALLBACKS("TestClusterClusterTestSpecificResponseCallback"); |
| |
| Callback::Callback<TestClusterClusterTestSpecificResponseCallback> * cb = |
| Callback::Callback<TestClusterClusterTestSpecificResponseCallback>::FromCancelable(onSuccessCallback); |
| cb->mCall(cb->mContext, returnValue); |
| return true; |
| } |
| |
| bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen) |
| { |
| ChipLogProgress(Zcl, "emberAfReportAttributeCallback:"); |
| ChipLogProgress(Zcl, " ClusterId: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); |
| |
| NodeId sourceId = emberAfCurrentCommand()->SourceNodeId(); |
| ChipLogProgress(Zcl, " Source NodeId: %" PRIu64, sourceId); |
| |
| EndpointId endpointId = emberAfCurrentCommand()->apsFrame->sourceEndpoint; |
| ChipLogProgress(Zcl, " Source EndpointId: 0x%04x", endpointId); |
| |
| // TODO onFailureCallback is just here because of the CHECK_MESSAGE_LENGTH macro. It needs to be removed. |
| Callback::Cancelable * onFailureCallback = nullptr; |
| |
| while (messageLen) |
| { |
| CHECK_MESSAGE_LENGTH(4); |
| AttributeId attributeId = chip::Encoding::LittleEndian::Read32(message); // attribId |
| ChipLogProgress(Zcl, " attributeId: " ChipLogFormatMEI, ChipLogValueMEI(attributeId)); |
| |
| GET_REPORT_CALLBACK("emberAfReportAttributesCallback"); |
| |
| CHECK_MESSAGE_LENGTH(1); |
| uint8_t attributeType = chip::Encoding::Read8(message); |
| ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType); |
| |
| switch (attributeType) |
| { |
| case 0x00: // nodata / No data |
| case 0x0A: // data24 / 24-bit data |
| case 0x0C: // data40 / 40-bit data |
| case 0x0D: // data48 / 48-bit data |
| case 0x0E: // data56 / 56-bit data |
| case 0x1A: // map24 / 24-bit bitmap |
| case 0x1C: // map40 / 40-bit bitmap |
| case 0x1D: // map48 / 48-bit bitmap |
| case 0x1E: // map56 / 56-bit bitmap |
| case 0x22: // uint24 / Unsigned 24-bit integer |
| case 0x24: // uint40 / Unsigned 40-bit integer |
| case 0x25: // uint48 / Unsigned 48-bit integer |
| case 0x26: // uint56 / Unsigned 56-bit integer |
| case 0x2A: // int24 / Signed 24-bit integer |
| case 0x2C: // int40 / Signed 40-bit integer |
| case 0x2D: // int48 / Signed 48-bit integer |
| case 0x2E: // int56 / Signed 56-bit integer |
| case 0x38: // semi / Semi-precision |
| case 0x39: // single / Single precision |
| case 0x3A: // double / Double precision |
| case 0x48: // array / Array |
| case 0x49: // struct / Structure |
| case 0x50: // set / Set |
| case 0x51: // bag / Bag |
| case 0xE0: // ToD / Time of day |
| { |
| ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType); |
| return true; |
| } |
| |
| case 0x41: // octstr / Octet string |
| case 0x42: // string / Character string |
| { |
| // Short Strings must contains at least one byte for the length |
| CHECK_MESSAGE_LENGTH(1); |
| uint8_t length = chip::Encoding::Read8(message); |
| ChipLogProgress(Zcl, " length: 0x%02x", length); |
| |
| // When the length is set to 0xFF, it represents a non-value. In this case the data field is zero length. |
| if (length == 0xFF) |
| { |
| length = 0; |
| } |
| |
| CHECK_MESSAGE_LENGTH(length); |
| if (attributeType == 0x41) |
| { |
| Callback::Callback<OctetStringAttributeCallback> * cb = |
| Callback::Callback<OctetStringAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, chip::ByteSpan(message, length)); |
| } |
| else |
| { |
| Callback::Callback<CharStringAttributeCallback> * cb = |
| Callback::Callback<CharStringAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, chip::ByteSpan(message, length)); |
| } |
| break; |
| } |
| |
| case 0x43: // octstr16 / Long octet string |
| case 0x44: // string16 / Long character string |
| { |
| // Long Strings must contains at least two bytes for the length |
| CHECK_MESSAGE_LENGTH(2); |
| uint16_t length = chip::Encoding::LittleEndian::Read16(message); |
| ChipLogProgress(Zcl, " length: 0x%02x", length); |
| |
| // When the length is set to 0xFFFF, it represents a non-value. In this case the data field is zero length. |
| if (length == 0xFFFF) |
| { |
| length = 0; |
| } |
| |
| CHECK_MESSAGE_LENGTH(length); |
| if (attributeType == 0x43) |
| { |
| Callback::Callback<OctetStringAttributeCallback> * cb = |
| Callback::Callback<OctetStringAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, chip::ByteSpan(message, length)); |
| } |
| else |
| { |
| Callback::Callback<CharStringAttributeCallback> * cb = |
| Callback::Callback<CharStringAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, chip::ByteSpan(message, length)); |
| } |
| break; |
| } |
| |
| case 0x08: // data8 / 8-bit data |
| case 0x18: // map8 / 8-bit bitmap |
| case 0x20: // uint8 / Unsigned 8-bit integer |
| case 0x30: // enum8 / 8-bit enumeration |
| { |
| CHECK_MESSAGE_LENGTH(1); |
| uint8_t value = chip::Encoding::Read8(message); |
| ChipLogProgress(Zcl, " value: 0x%02x", value); |
| |
| Callback::Callback<Int8uAttributeCallback> * cb = |
| Callback::Callback<Int8uAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, value); |
| break; |
| } |
| |
| case 0x09: // data16 / 16-bit data |
| case 0x19: // map16 / 16-bit bitmap |
| case 0x21: // uint16 / Unsigned 16-bit integer |
| case 0x31: // enum16 / 16-bit enumeration |
| case 0xE8: // clusterId / Cluster ID |
| case 0xE9: // attribId / Attribute ID |
| case 0xEA: // bacOID / BACnet OID |
| case 0xF1: // key128 / 128-bit security key |
| case 0xFF: // unk / Unknown |
| { |
| CHECK_MESSAGE_LENGTH(2); |
| uint16_t value = chip::Encoding::LittleEndian::Read16(message); |
| ChipLogProgress(Zcl, " value: 0x%04x", value); |
| |
| Callback::Callback<Int16uAttributeCallback> * cb = |
| Callback::Callback<Int16uAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, value); |
| break; |
| } |
| |
| case 0x0B: // data32 / 32-bit data |
| case 0x1B: // map32 / 32-bit bitmap |
| case 0x23: // uint32 / Unsigned 32-bit integer |
| case 0xE1: // date / Date |
| case 0xE2: // UTC / UTCTime |
| { |
| CHECK_MESSAGE_LENGTH(4); |
| uint32_t value = chip::Encoding::LittleEndian::Read32(message); |
| ChipLogProgress(Zcl, " value: 0x%08x", value); |
| |
| Callback::Callback<Int32uAttributeCallback> * cb = |
| Callback::Callback<Int32uAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, value); |
| break; |
| } |
| |
| case 0x0F: // data64 / 64-bit data |
| case 0x1F: // map64 / 64-bit bitmap |
| case 0x27: // uint64 / Unsigned 64-bit integer |
| case 0xF0: // EUI64 / IEEE address |
| { |
| CHECK_MESSAGE_LENGTH(8); |
| uint64_t value = chip::Encoding::LittleEndian::Read64(message); |
| ChipLogProgress(Zcl, " value: 0x" ChipLogFormatX64, ChipLogValueX64(value)); |
| |
| Callback::Callback<Int64uAttributeCallback> * cb = |
| Callback::Callback<Int64uAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, value); |
| break; |
| } |
| |
| case 0x10: // bool / Boolean |
| { |
| CHECK_MESSAGE_LENGTH(1); |
| uint8_t value = chip::Encoding::Read8(message); |
| ChipLogProgress(Zcl, " value: %d", value); |
| |
| Callback::Callback<BooleanAttributeCallback> * cb = |
| Callback::Callback<BooleanAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, value); |
| break; |
| } |
| |
| case 0x28: // int8 / Signed 8-bit integer |
| { |
| CHECK_MESSAGE_LENGTH(1); |
| int8_t value = chip::CastToSigned(chip::Encoding::Read8(message)); |
| ChipLogProgress(Zcl, " value: %" PRId8, value); |
| |
| Callback::Callback<Int8sAttributeCallback> * cb = |
| Callback::Callback<Int8sAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, value); |
| break; |
| } |
| |
| case 0x29: // int16 / Signed 16-bit integer |
| { |
| CHECK_MESSAGE_LENGTH(2); |
| int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message)); |
| ChipLogProgress(Zcl, " value: %" PRId16, value); |
| |
| Callback::Callback<Int16sAttributeCallback> * cb = |
| Callback::Callback<Int16sAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, value); |
| break; |
| } |
| |
| case 0x2B: // int32 / Signed 32-bit integer |
| { |
| CHECK_MESSAGE_LENGTH(4); |
| int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message)); |
| ChipLogProgress(Zcl, " value: %" PRId32, value); |
| |
| Callback::Callback<Int32sAttributeCallback> * cb = |
| Callback::Callback<Int32sAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, value); |
| break; |
| } |
| |
| case 0x2F: // int64 / Signed 64-bit integer |
| { |
| CHECK_MESSAGE_LENGTH(8); |
| int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message)); |
| ChipLogProgress(Zcl, " value: %" PRId64, value); |
| |
| Callback::Callback<Int64sAttributeCallback> * cb = |
| Callback::Callback<Int64sAttributeCallback>::FromCancelable(onReportCallback); |
| cb->mCall(cb->mContext, value); |
| break; |
| } |
| } |
| } |
| |
| return true; |
| } |