3 * Copyright (c) 2021 Project CHIP Authors
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 // THIS FILE IS GENERATED BY ZAP
20 #include "gen/CHIPClientCallbacks.h"
22 #include "gen/enums.h"
23 #include <app/util/CHIPDeviceCallbacksMgr.h>
24 #include <app/util/af-enums.h>
25 #include <app/util/af.h>
26 #include <app/util/basic-types.h>
27 #include <core/CHIPEncoding.h>
28 #include <support/SafeInt.h>
29 #include <support/logging/CHIPLogging.h>
31 using namespace ::chip;
33 #define CHECK_MESSAGE_LENGTH(value) \
34 if (!chip::CanCastTo<uint16_t>(value)) \
36 ChipLogError(Zcl, "CHECK_MESSAGE_LENGTH expects a uint16_t value, got: %d", value); \
37 if (onFailureCallback != nullptr) \
39 Callback::Callback<DefaultFailureCallback> * cb = \
40 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
41 cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
46 if (messageLen < value) \
48 ChipLogError(Zcl, "Unexpected response length: %d", messageLen); \
49 if (onFailureCallback != nullptr) \
51 Callback::Callback<DefaultFailureCallback> * cb = \
52 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
53 cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
58 messageLen = static_cast<uint16_t>(messageLen - static_cast<uint16_t>(value));
60 #define GET_RESPONSE_CALLBACKS(name) \
61 Callback::Cancelable * onSuccessCallback = nullptr; \
62 Callback::Cancelable * onFailureCallback = nullptr; \
63 NodeId sourceId = emberAfCurrentCommand()->source; \
64 uint8_t sequenceNumber = emberAfCurrentCommand()->seqNum; \
65 CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceId, sequenceNumber, &onSuccessCallback, &onFailureCallback); \
67 if (CHIP_NO_ERROR != err) \
69 if (onSuccessCallback == nullptr) \
71 ChipLogDetail(Zcl, "%s: Missing success callback", name); \
74 if (onFailureCallback == nullptr) \
76 ChipLogDetail(Zcl, "%s: Missing failure callback", name); \
82 #define GET_REPORT_CALLBACK(name) \
83 Callback::Cancelable * onReportCallback = nullptr; \
84 CHIP_ERROR err = gCallbacks.GetReportCallback(sourceId, endpointId, clusterId, attributeId, &onReportCallback); \
86 if (CHIP_NO_ERROR != err) \
88 if (onReportCallback == nullptr) \
90 ChipLogDetail(Zcl, "%s: Missing report callback", name); \
96 void LogStatus(uint8_t status)
100 case EMBER_ZCL_STATUS_SUCCESS:
101 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SUCCESS (0x%02x)", status);
103 case EMBER_ZCL_STATUS_FAILURE:
104 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_FAILURE (0x%02x)", status);
106 case EMBER_ZCL_STATUS_NOT_AUTHORIZED:
107 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_AUTHORIZED (0x%02x)", status);
109 case EMBER_ZCL_STATUS_MALFORMED_COMMAND:
110 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_MALFORMED_COMMAND (0x%02x)", status);
112 case EMBER_ZCL_STATUS_UNSUP_COMMAND:
113 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND (0x%02x)", status);
115 case EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND:
116 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND (0x%02x)", status);
118 case EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND:
119 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND (0x%02x)", status);
121 case EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND:
122 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND (0x%02x)", status);
124 case EMBER_ZCL_STATUS_INVALID_FIELD:
125 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_FIELD (0x%02x)", status);
127 case EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE:
128 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE (0x%02x)", status);
130 case EMBER_ZCL_STATUS_INVALID_VALUE:
131 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_VALUE (0x%02x)", status);
133 case EMBER_ZCL_STATUS_READ_ONLY:
134 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_READ_ONLY (0x%02x)", status);
136 case EMBER_ZCL_STATUS_INSUFFICIENT_SPACE:
137 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INSUFFICIENT_SPACE (0x%02x)", status);
139 case EMBER_ZCL_STATUS_DUPLICATE_EXISTS:
140 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DUPLICATE_EXISTS (0x%02x)", status);
142 case EMBER_ZCL_STATUS_NOT_FOUND:
143 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_FOUND (0x%02x)", status);
145 case EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE:
146 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE (0x%02x)", status);
148 case EMBER_ZCL_STATUS_INVALID_DATA_TYPE:
149 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_DATA_TYPE (0x%02x)", status);
151 case EMBER_ZCL_STATUS_INVALID_SELECTOR:
152 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_SELECTOR (0x%02x)", status);
154 case EMBER_ZCL_STATUS_WRITE_ONLY:
155 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WRITE_ONLY (0x%02x)", status);
157 case EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE:
158 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE (0x%02x)", status);
160 case EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND:
161 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DEFINED_OUT_Of_BAND (0x%02x)", status);
163 case EMBER_ZCL_STATUS_ACTION_DENIED:
164 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ACTION_DENIED (0x%02x)", status);
166 case EMBER_ZCL_STATUS_TIMEOUT:
167 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_TIMEOUT (0x%02x)", status);
169 case EMBER_ZCL_STATUS_ABORT:
170 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ABORT (0x%02x)", status);
172 case EMBER_ZCL_STATUS_INVALID_IMAGE:
173 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_IMAGE (0x%02x)", status);
175 case EMBER_ZCL_STATUS_WAIT_FOR_DATA:
176 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WAIT_FOR_DATA (0x%02x)", status);
178 case EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE:
179 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE (0x%02x)", status);
181 case EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE:
182 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE (0x%02x)", status);
184 case EMBER_ZCL_STATUS_HARDWARE_FAILURE:
185 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_HARDWARE_FAILURE (0x%02x)", status);
187 case EMBER_ZCL_STATUS_SOFTWARE_FAILURE:
188 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SOFTWARE_FAILURE (0x%02x)", status);
190 case EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER:
191 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER (0x%02x)", status);
193 case EMBER_ZCL_STATUS_LIMIT_REACHED:
194 ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_LIMIT_REACHED (0x%02x)", status);
197 ChipLogError(Zcl, "Unknow status: 0x%02x", status);
202 // Singleton instance of the callbacks manager
203 app::CHIPDeviceCallbacksMgr & gCallbacks = app::CHIPDeviceCallbacksMgr::GetInstance();
205 bool emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status)
207 ChipLogProgress(Zcl, "DefaultResponse:");
208 ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
209 ChipLogProgress(Zcl, " CommandId: 0x%02x", commandId);
212 GET_RESPONSE_CALLBACKS("emberAfDefaultResponseCallback");
213 if (status == EMBER_ZCL_STATUS_SUCCESS)
215 Callback::Callback<DefaultSuccessCallback> * cb =
216 Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
217 cb->mCall(cb->mContext);
221 Callback::Callback<DefaultFailureCallback> * cb =
222 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
223 cb->mCall(cb->mContext, static_cast<uint8_t>(status));
229 bool emberAfReadAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
231 ChipLogProgress(Zcl, "ReadAttributesResponse:");
232 ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
234 GET_RESPONSE_CALLBACKS("emberAfReadAttributesResponseCallback");
236 // struct readAttributeResponseRecord[]
239 CHECK_MESSAGE_LENGTH(2);
240 uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
241 ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
243 CHECK_MESSAGE_LENGTH(1);
244 uint8_t status = chip::Encoding::Read8(message); // zclStatus
247 if (status == EMBER_ZCL_STATUS_SUCCESS)
249 CHECK_MESSAGE_LENGTH(1);
250 uint8_t attributeType = chip::Encoding::Read8(message);
251 ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
253 switch (attributeType)
255 case 0x00: // nodata / No data
256 case 0x0A: // data24 / 24-bit data
257 case 0x0C: // data40 / 40-bit data
258 case 0x0D: // data48 / 48-bit data
259 case 0x0E: // data56 / 56-bit data
260 case 0x1A: // map24 / 24-bit bitmap
261 case 0x1C: // map40 / 40-bit bitmap
262 case 0x1D: // map48 / 48-bit bitmap
263 case 0x1E: // map56 / 56-bit bitmap
264 case 0x22: // uint24 / Unsigned 24-bit integer
265 case 0x24: // uint40 / Unsigned 40-bit integer
266 case 0x25: // uint48 / Unsigned 48-bit integer
267 case 0x26: // uint56 / Unsigned 56-bit integer
268 case 0x2A: // int24 / Signed 24-bit integer
269 case 0x2C: // int40 / Signed 40-bit integer
270 case 0x2D: // int48 / Signed 48-bit integer
271 case 0x2E: // int56 / Signed 56-bit integer
272 case 0x38: // semi / Semi-precision
273 case 0x39: // single / Single precision
274 case 0x3A: // double / Double precision
275 case 0x41: // octstr / Octet string
276 case 0x42: // string / Character string
277 case 0x43: // octstr16 / Long octet string
278 case 0x44: // string16 / Long character string
279 case 0x48: // array / Array
280 case 0x49: // struct / Structure
281 case 0x50: // set / Set
282 case 0x51: // bag / Bag
283 case 0xE0: // ToD / Time of day
285 ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
286 Callback::Callback<DefaultFailureCallback> * cb =
287 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
288 cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
292 case 0x08: // data8 / 8-bit data
293 case 0x18: // map8 / 8-bit bitmap
294 case 0x20: // uint8 / Unsigned 8-bit integer
295 case 0x30: // enum8 / 8-bit enumeration
297 CHECK_MESSAGE_LENGTH(1);
298 uint8_t value = chip::Encoding::Read8(message);
299 ChipLogProgress(Zcl, " value: 0x%02x", value);
301 Callback::Callback<Int8uAttributeCallback> * cb =
302 Callback::Callback<Int8uAttributeCallback>::FromCancelable(onSuccessCallback);
303 cb->mCall(cb->mContext, value);
307 case 0x09: // data16 / 16-bit data
308 case 0x19: // map16 / 16-bit bitmap
309 case 0x21: // uint16 / Unsigned 16-bit integer
310 case 0x31: // enum16 / 16-bit enumeration
311 case 0xE8: // clusterId / Cluster ID
312 case 0xE9: // attribId / Attribute ID
313 case 0xEA: // bacOID / BACnet OID
314 case 0xF1: // key128 / 128-bit security key
315 case 0xFF: // unk / Unknown
317 CHECK_MESSAGE_LENGTH(2);
318 uint16_t value = chip::Encoding::LittleEndian::Read16(message);
319 ChipLogProgress(Zcl, " value: 0x%04x", value);
321 Callback::Callback<Int16uAttributeCallback> * cb =
322 Callback::Callback<Int16uAttributeCallback>::FromCancelable(onSuccessCallback);
323 cb->mCall(cb->mContext, value);
327 case 0x0B: // data32 / 32-bit data
328 case 0x1B: // map32 / 32-bit bitmap
329 case 0x23: // uint32 / Unsigned 32-bit integer
330 case 0xE1: // date / Date
331 case 0xE2: // UTC / UTCTime
333 CHECK_MESSAGE_LENGTH(4);
334 uint32_t value = chip::Encoding::LittleEndian::Read32(message);
335 ChipLogProgress(Zcl, " value: 0x%08x", value);
337 Callback::Callback<Int32uAttributeCallback> * cb =
338 Callback::Callback<Int32uAttributeCallback>::FromCancelable(onSuccessCallback);
339 cb->mCall(cb->mContext, value);
343 case 0x0F: // data64 / 64-bit data
344 case 0x1F: // map64 / 64-bit bitmap
345 case 0x27: // uint64 / Unsigned 64-bit integer
346 case 0xF0: // EUI64 / IEEE address
348 CHECK_MESSAGE_LENGTH(8);
349 uint64_t value = chip::Encoding::LittleEndian::Read64(message);
350 ChipLogProgress(Zcl, " value: 0x%16x", value);
352 Callback::Callback<Int64uAttributeCallback> * cb =
353 Callback::Callback<Int64uAttributeCallback>::FromCancelable(onSuccessCallback);
354 cb->mCall(cb->mContext, value);
358 case 0x10: // bool / Boolean
360 CHECK_MESSAGE_LENGTH(1);
361 uint8_t value = chip::Encoding::Read8(message);
362 ChipLogProgress(Zcl, " value: %d", value);
364 Callback::Callback<BooleanAttributeCallback> * cb =
365 Callback::Callback<BooleanAttributeCallback>::FromCancelable(onSuccessCallback);
366 cb->mCall(cb->mContext, value);
370 case 0x28: // int8 / Signed 8-bit integer
372 CHECK_MESSAGE_LENGTH(1);
373 int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
374 ChipLogProgress(Zcl, " value: %" PRId8, value);
376 Callback::Callback<Int8sAttributeCallback> * cb =
377 Callback::Callback<Int8sAttributeCallback>::FromCancelable(onSuccessCallback);
378 cb->mCall(cb->mContext, value);
382 case 0x29: // int16 / Signed 16-bit integer
384 CHECK_MESSAGE_LENGTH(2);
385 int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
386 ChipLogProgress(Zcl, " value: %" PRId16, value);
388 Callback::Callback<Int16sAttributeCallback> * cb =
389 Callback::Callback<Int16sAttributeCallback>::FromCancelable(onSuccessCallback);
390 cb->mCall(cb->mContext, value);
394 case 0x2B: // int32 / Signed 32-bit integer
396 CHECK_MESSAGE_LENGTH(4);
397 int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
398 ChipLogProgress(Zcl, " value: %" PRId32, value);
400 Callback::Callback<Int32sAttributeCallback> * cb =
401 Callback::Callback<Int32sAttributeCallback>::FromCancelable(onSuccessCallback);
402 cb->mCall(cb->mContext, value);
406 case 0x2F: // int64 / Signed 64-bit integer
408 CHECK_MESSAGE_LENGTH(8);
409 int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
410 ChipLogProgress(Zcl, " value: %" PRId64, value);
412 Callback::Callback<Int64sAttributeCallback> * cb =
413 Callback::Callback<Int64sAttributeCallback>::FromCancelable(onSuccessCallback);
414 cb->mCall(cb->mContext, value);
421 Callback::Callback<DefaultFailureCallback> * cb =
422 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
423 cb->mCall(cb->mContext, status);
426 // The current code is written matching the current API where there is a single attribute read
427 // per read command. So if multiple attributes are read at the same time, something is wrong
431 ChipLogError(Zcl, "Multiple attributes read at the same time. Something went wrong.");
439 bool emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
441 ChipLogProgress(Zcl, "WriteAttributesResponse:");
442 ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
444 GET_RESPONSE_CALLBACKS("emberAfWriteAttributesResponseCallback");
446 // struct writeAttributeResponseRecord[]
449 CHECK_MESSAGE_LENGTH(1);
450 uint8_t status = chip::Encoding::Read8(message); // zclStatus
453 if (status == EMBER_ZCL_STATUS_SUCCESS)
455 Callback::Callback<DefaultSuccessCallback> * cb =
456 Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
457 cb->mCall(cb->mContext);
461 CHECK_MESSAGE_LENGTH(2);
462 uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
463 ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
465 Callback::Callback<DefaultFailureCallback> * cb =
466 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
467 cb->mCall(cb->mContext, status);
470 // The current code is written matching the current API where there is a single attribute written
471 // per write command. So if multiple attributes are written at the same time, something is wrong
475 ChipLogError(Zcl, "Multiple attributes written at the same time. Something went wrong.");
483 bool emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
485 ChipLogProgress(Zcl, "ConfigureReportingResponseCallback:");
486 ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
488 GET_RESPONSE_CALLBACKS("emberAfConfigureReportingResponseCallback");
490 // struct configureReportingResponseRecord[]
493 CHECK_MESSAGE_LENGTH(1);
494 uint8_t status = chip::Encoding::Read8(message); // zclStatus
497 if (status == EMBER_ZCL_STATUS_SUCCESS)
499 Callback::Callback<DefaultSuccessCallback> * cb =
500 Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
501 cb->mCall(cb->mContext);
505 CHECK_MESSAGE_LENGTH(1);
506 uint8_t direction = chip::Encoding::Read8(message); // reportingRole
507 ChipLogProgress(Zcl, " direction: 0x%02x", direction);
509 CHECK_MESSAGE_LENGTH(2);
510 uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
511 ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
513 Callback::Callback<DefaultFailureCallback> * cb =
514 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
515 cb->mCall(cb->mContext, status);
518 // The current code is written matching the current API where there is a single attribute report
519 // per configure command. So if multiple attributes are configured at the same time, something is wrong
523 ChipLogError(Zcl, "Multiple attributes reports configured at the same time. Something went wrong.");
531 bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * message, uint16_t messageLen)
533 ChipLogProgress(Zcl, "ReadReportingConfigurationResponse:");
534 ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
536 GET_RESPONSE_CALLBACKS("emberAfReadReportingConfigurationResponseCallback");
538 // struct readReportingConfigurationResponseRecord[]
541 CHECK_MESSAGE_LENGTH(1);
542 uint8_t direction = chip::Encoding::Read8(message); // reportingRole
543 ChipLogProgress(Zcl, " direction: 0x%02x", direction);
545 CHECK_MESSAGE_LENGTH(2);
546 uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
547 ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
549 if (direction == EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
551 CHECK_MESSAGE_LENGTH(1);
552 uint8_t attributeType = chip::Encoding::Read8(message); // zclType
553 ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
555 CHECK_MESSAGE_LENGTH(2);
556 uint16_t minimumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
557 ChipLogProgress(Zcl, " minimumReportingInterval: %" PRIu16, minimumReportingInterval);
559 CHECK_MESSAGE_LENGTH(2);
560 uint16_t maximumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
561 ChipLogProgress(Zcl, " maximumReportingInterval: %" PRIu16, maximumReportingInterval);
563 // FIXME: unk is not supported yet.
565 Callback::Callback<ReadReportingConfigurationReportedCallback> * cb =
566 Callback::Callback<ReadReportingConfigurationReportedCallback>::FromCancelable(onSuccessCallback);
567 cb->mCall(cb->mContext, minimumReportingInterval, maximumReportingInterval);
571 CHECK_MESSAGE_LENGTH(2);
572 uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16
573 ChipLogProgress(Zcl, " timeout: %" PRIu16, timeout);
575 Callback::Callback<ReadReportingConfigurationReceivedCallback> * cb =
576 Callback::Callback<ReadReportingConfigurationReceivedCallback>::FromCancelable(onSuccessCallback);
577 cb->mCall(cb->mContext, timeout);
584 bool emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * message, uint16_t messageLen,
587 ChipLogProgress(Zcl, "DiscoverAttributesResponse:");
588 ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
589 ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
590 ChipLogProgress(Zcl, " extended: %d", extended);
592 GET_RESPONSE_CALLBACKS("emberAfDiscoverAttributesCallback");
594 // struct discoverAttributesResponseRecord[]
597 CHECK_MESSAGE_LENGTH(2);
598 uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
599 ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
601 CHECK_MESSAGE_LENGTH(1);
602 uint8_t attributeType = chip::Encoding::Read8(message); // zclType
603 ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
606 Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
607 cb->mCall(cb->mContext);
611 bool emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
612 CommandId * commandIds, uint16_t commandIdCount)
614 ChipLogProgress(Zcl, "DiscoverCommandsGeneratedResponse:");
615 ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
616 ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
617 ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
618 ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
620 for (uint16_t i = 0; i < commandIdCount; i++)
622 ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
625 GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
626 Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
627 cb->mCall(cb->mContext);
631 bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
632 CommandId * commandIds, uint16_t commandIdCount)
634 ChipLogProgress(Zcl, "DiscoverCommandsReceivedResponse:");
635 ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
636 ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
637 ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
638 ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
640 for (uint16_t i = 0; i < commandIdCount; i++)
642 ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
645 GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
646 Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
647 cb->mCall(cb->mContext);
651 bool emberAfContentLaunchClusterLaunchContentResponseCallback(uint8_t contentLaunchStatus)
653 ChipLogProgress(Zcl, "LaunchContentResponse:");
654 ChipLogProgress(Zcl, " contentLaunchStatus: %" PRIu8 "", contentLaunchStatus);
656 GET_RESPONSE_CALLBACKS("ContentLaunchClusterLaunchContentResponseCallback");
658 Callback::Callback<ContentLaunchClusterLaunchContentResponseCallback> * cb =
659 Callback::Callback<ContentLaunchClusterLaunchContentResponseCallback>::FromCancelable(onSuccessCallback);
660 cb->mCall(cb->mContext, contentLaunchStatus);
664 bool emberAfContentLaunchClusterLaunchURLResponseCallback(uint8_t contentLaunchStatus)
666 ChipLogProgress(Zcl, "LaunchURLResponse:");
667 ChipLogProgress(Zcl, " contentLaunchStatus: %" PRIu8 "", contentLaunchStatus);
669 GET_RESPONSE_CALLBACKS("ContentLaunchClusterLaunchURLResponseCallback");
671 Callback::Callback<ContentLaunchClusterLaunchURLResponseCallback> * cb =
672 Callback::Callback<ContentLaunchClusterLaunchURLResponseCallback>::FromCancelable(onSuccessCallback);
673 cb->mCall(cb->mContext, contentLaunchStatus);
677 bool emberAfDoorLockClusterClearAllPinsResponseCallback(uint8_t status)
679 ChipLogProgress(Zcl, "ClearAllPinsResponse:");
682 GET_RESPONSE_CALLBACKS("DoorLockClusterClearAllPinsResponseCallback");
684 if (status != EMBER_ZCL_STATUS_SUCCESS)
686 Callback::Callback<DefaultFailureCallback> * cb =
687 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
688 cb->mCall(cb->mContext, status);
692 Callback::Callback<DoorLockClusterClearAllPinsResponseCallback> * cb =
693 Callback::Callback<DoorLockClusterClearAllPinsResponseCallback>::FromCancelable(onSuccessCallback);
694 cb->mCall(cb->mContext);
698 bool emberAfDoorLockClusterClearAllRfidsResponseCallback(uint8_t status)
700 ChipLogProgress(Zcl, "ClearAllRfidsResponse:");
703 GET_RESPONSE_CALLBACKS("DoorLockClusterClearAllRfidsResponseCallback");
705 if (status != EMBER_ZCL_STATUS_SUCCESS)
707 Callback::Callback<DefaultFailureCallback> * cb =
708 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
709 cb->mCall(cb->mContext, status);
713 Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback> * cb =
714 Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback>::FromCancelable(onSuccessCallback);
715 cb->mCall(cb->mContext);
719 bool emberAfDoorLockClusterClearHolidayScheduleResponseCallback(uint8_t status)
721 ChipLogProgress(Zcl, "ClearHolidayScheduleResponse:");
724 GET_RESPONSE_CALLBACKS("DoorLockClusterClearHolidayScheduleResponseCallback");
726 if (status != EMBER_ZCL_STATUS_SUCCESS)
728 Callback::Callback<DefaultFailureCallback> * cb =
729 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
730 cb->mCall(cb->mContext, status);
734 Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback> * cb =
735 Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
736 cb->mCall(cb->mContext);
740 bool emberAfDoorLockClusterClearPinResponseCallback(uint8_t status)
742 ChipLogProgress(Zcl, "ClearPinResponse:");
745 GET_RESPONSE_CALLBACKS("DoorLockClusterClearPinResponseCallback");
747 if (status != EMBER_ZCL_STATUS_SUCCESS)
749 Callback::Callback<DefaultFailureCallback> * cb =
750 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
751 cb->mCall(cb->mContext, status);
755 Callback::Callback<DoorLockClusterClearPinResponseCallback> * cb =
756 Callback::Callback<DoorLockClusterClearPinResponseCallback>::FromCancelable(onSuccessCallback);
757 cb->mCall(cb->mContext);
761 bool emberAfDoorLockClusterClearRfidResponseCallback(uint8_t status)
763 ChipLogProgress(Zcl, "ClearRfidResponse:");
766 GET_RESPONSE_CALLBACKS("DoorLockClusterClearRfidResponseCallback");
768 if (status != EMBER_ZCL_STATUS_SUCCESS)
770 Callback::Callback<DefaultFailureCallback> * cb =
771 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
772 cb->mCall(cb->mContext, status);
776 Callback::Callback<DoorLockClusterClearRfidResponseCallback> * cb =
777 Callback::Callback<DoorLockClusterClearRfidResponseCallback>::FromCancelable(onSuccessCallback);
778 cb->mCall(cb->mContext);
782 bool emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(uint8_t status)
784 ChipLogProgress(Zcl, "ClearWeekdayScheduleResponse:");
787 GET_RESPONSE_CALLBACKS("DoorLockClusterClearWeekdayScheduleResponseCallback");
789 if (status != EMBER_ZCL_STATUS_SUCCESS)
791 Callback::Callback<DefaultFailureCallback> * cb =
792 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
793 cb->mCall(cb->mContext, status);
797 Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback> * cb =
798 Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
799 cb->mCall(cb->mContext);
803 bool emberAfDoorLockClusterClearYeardayScheduleResponseCallback(uint8_t status)
805 ChipLogProgress(Zcl, "ClearYeardayScheduleResponse:");
808 GET_RESPONSE_CALLBACKS("DoorLockClusterClearYeardayScheduleResponseCallback");
810 if (status != EMBER_ZCL_STATUS_SUCCESS)
812 Callback::Callback<DefaultFailureCallback> * cb =
813 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
814 cb->mCall(cb->mContext, status);
818 Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback> * cb =
819 Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
820 cb->mCall(cb->mContext);
824 bool emberAfDoorLockClusterGetHolidayScheduleResponseCallback(uint8_t scheduleId, uint8_t status, uint32_t localStartTime,
825 uint32_t localEndTime, uint8_t operatingModeDuringHoliday)
827 ChipLogProgress(Zcl, "GetHolidayScheduleResponse:");
828 ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId);
830 ChipLogProgress(Zcl, " localStartTime: %" PRIu32 "", localStartTime);
831 ChipLogProgress(Zcl, " localEndTime: %" PRIu32 "", localEndTime);
832 ChipLogProgress(Zcl, " operatingModeDuringHoliday: %" PRIu8 "", operatingModeDuringHoliday);
834 GET_RESPONSE_CALLBACKS("DoorLockClusterGetHolidayScheduleResponseCallback");
836 if (status != EMBER_ZCL_STATUS_SUCCESS)
838 Callback::Callback<DefaultFailureCallback> * cb =
839 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
840 cb->mCall(cb->mContext, status);
844 Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback> * cb =
845 Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
846 cb->mCall(cb->mContext, scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday);
850 bool emberAfDoorLockClusterGetLogRecordResponseCallback(uint16_t logEntryId, uint32_t timestamp, uint8_t eventType, uint8_t source,
851 uint8_t eventIdOrAlarmCode, uint16_t userId, uint8_t * pin)
853 ChipLogProgress(Zcl, "GetLogRecordResponse:");
854 ChipLogProgress(Zcl, " logEntryId: %" PRIu16 "", logEntryId);
855 ChipLogProgress(Zcl, " timestamp: %" PRIu32 "", timestamp);
856 ChipLogProgress(Zcl, " eventType: %" PRIu8 "", eventType);
857 ChipLogProgress(Zcl, " source: %" PRIu8 "", source);
858 ChipLogProgress(Zcl, " eventIdOrAlarmCode: %" PRIu8 "", eventIdOrAlarmCode);
859 ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
860 ChipLogProgress(Zcl, " pin: %s", pin);
862 GET_RESPONSE_CALLBACKS("DoorLockClusterGetLogRecordResponseCallback");
864 Callback::Callback<DoorLockClusterGetLogRecordResponseCallback> * cb =
865 Callback::Callback<DoorLockClusterGetLogRecordResponseCallback>::FromCancelable(onSuccessCallback);
866 cb->mCall(cb->mContext, logEntryId, timestamp, eventType, source, eventIdOrAlarmCode, userId, pin);
870 bool emberAfDoorLockClusterGetPinResponseCallback(uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * pin)
872 ChipLogProgress(Zcl, "GetPinResponse:");
873 ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
874 ChipLogProgress(Zcl, " userStatus: %" PRIu8 "", userStatus);
875 ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType);
876 ChipLogProgress(Zcl, " pin: %s", pin);
878 GET_RESPONSE_CALLBACKS("DoorLockClusterGetPinResponseCallback");
880 Callback::Callback<DoorLockClusterGetPinResponseCallback> * cb =
881 Callback::Callback<DoorLockClusterGetPinResponseCallback>::FromCancelable(onSuccessCallback);
882 cb->mCall(cb->mContext, userId, userStatus, userType, pin);
886 bool emberAfDoorLockClusterGetRfidResponseCallback(uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * rfid)
888 ChipLogProgress(Zcl, "GetRfidResponse:");
889 ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
890 ChipLogProgress(Zcl, " userStatus: %" PRIu8 "", userStatus);
891 ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType);
892 ChipLogProgress(Zcl, " rfid: %s", rfid);
894 GET_RESPONSE_CALLBACKS("DoorLockClusterGetRfidResponseCallback");
896 Callback::Callback<DoorLockClusterGetRfidResponseCallback> * cb =
897 Callback::Callback<DoorLockClusterGetRfidResponseCallback>::FromCancelable(onSuccessCallback);
898 cb->mCall(cb->mContext, userId, userStatus, userType, rfid);
902 bool emberAfDoorLockClusterGetUserTypeResponseCallback(uint16_t userId, uint8_t userType)
904 ChipLogProgress(Zcl, "GetUserTypeResponse:");
905 ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
906 ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType);
908 GET_RESPONSE_CALLBACKS("DoorLockClusterGetUserTypeResponseCallback");
910 Callback::Callback<DoorLockClusterGetUserTypeResponseCallback> * cb =
911 Callback::Callback<DoorLockClusterGetUserTypeResponseCallback>::FromCancelable(onSuccessCallback);
912 cb->mCall(cb->mContext, userId, userType);
916 bool emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(uint8_t scheduleId, uint16_t userId, uint8_t status, uint8_t daysMask,
917 uint8_t startHour, uint8_t startMinute, uint8_t endHour,
920 ChipLogProgress(Zcl, "GetWeekdayScheduleResponse:");
921 ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId);
922 ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
924 ChipLogProgress(Zcl, " daysMask: %" PRIu8 "", daysMask);
925 ChipLogProgress(Zcl, " startHour: %" PRIu8 "", startHour);
926 ChipLogProgress(Zcl, " startMinute: %" PRIu8 "", startMinute);
927 ChipLogProgress(Zcl, " endHour: %" PRIu8 "", endHour);
928 ChipLogProgress(Zcl, " endMinute: %" PRIu8 "", endMinute);
930 GET_RESPONSE_CALLBACKS("DoorLockClusterGetWeekdayScheduleResponseCallback");
932 if (status != EMBER_ZCL_STATUS_SUCCESS)
934 Callback::Callback<DefaultFailureCallback> * cb =
935 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
936 cb->mCall(cb->mContext, status);
940 Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback> * cb =
941 Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
942 cb->mCall(cb->mContext, scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute);
946 bool emberAfDoorLockClusterGetYeardayScheduleResponseCallback(uint8_t scheduleId, uint16_t userId, uint8_t status,
947 uint32_t localStartTime, uint32_t localEndTime)
949 ChipLogProgress(Zcl, "GetYeardayScheduleResponse:");
950 ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId);
951 ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
953 ChipLogProgress(Zcl, " localStartTime: %" PRIu32 "", localStartTime);
954 ChipLogProgress(Zcl, " localEndTime: %" PRIu32 "", localEndTime);
956 GET_RESPONSE_CALLBACKS("DoorLockClusterGetYeardayScheduleResponseCallback");
958 if (status != EMBER_ZCL_STATUS_SUCCESS)
960 Callback::Callback<DefaultFailureCallback> * cb =
961 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
962 cb->mCall(cb->mContext, status);
966 Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback> * cb =
967 Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
968 cb->mCall(cb->mContext, scheduleId, userId, localStartTime, localEndTime);
972 bool emberAfDoorLockClusterLockDoorResponseCallback(uint8_t status)
974 ChipLogProgress(Zcl, "LockDoorResponse:");
977 GET_RESPONSE_CALLBACKS("DoorLockClusterLockDoorResponseCallback");
979 if (status != EMBER_ZCL_STATUS_SUCCESS)
981 Callback::Callback<DefaultFailureCallback> * cb =
982 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
983 cb->mCall(cb->mContext, status);
987 Callback::Callback<DoorLockClusterLockDoorResponseCallback> * cb =
988 Callback::Callback<DoorLockClusterLockDoorResponseCallback>::FromCancelable(onSuccessCallback);
989 cb->mCall(cb->mContext);
993 bool emberAfDoorLockClusterSetHolidayScheduleResponseCallback(uint8_t status)
995 ChipLogProgress(Zcl, "SetHolidayScheduleResponse:");
998 GET_RESPONSE_CALLBACKS("DoorLockClusterSetHolidayScheduleResponseCallback");
1000 if (status != EMBER_ZCL_STATUS_SUCCESS)
1002 Callback::Callback<DefaultFailureCallback> * cb =
1003 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1004 cb->mCall(cb->mContext, status);
1008 Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback> * cb =
1009 Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
1010 cb->mCall(cb->mContext);
1014 bool emberAfDoorLockClusterSetPinResponseCallback(uint8_t status)
1016 ChipLogProgress(Zcl, "SetPinResponse:");
1019 GET_RESPONSE_CALLBACKS("DoorLockClusterSetPinResponseCallback");
1021 if (status != EMBER_ZCL_STATUS_SUCCESS)
1023 Callback::Callback<DefaultFailureCallback> * cb =
1024 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1025 cb->mCall(cb->mContext, status);
1029 Callback::Callback<DoorLockClusterSetPinResponseCallback> * cb =
1030 Callback::Callback<DoorLockClusterSetPinResponseCallback>::FromCancelable(onSuccessCallback);
1031 cb->mCall(cb->mContext);
1035 bool emberAfDoorLockClusterSetRfidResponseCallback(uint8_t status)
1037 ChipLogProgress(Zcl, "SetRfidResponse:");
1040 GET_RESPONSE_CALLBACKS("DoorLockClusterSetRfidResponseCallback");
1042 if (status != EMBER_ZCL_STATUS_SUCCESS)
1044 Callback::Callback<DefaultFailureCallback> * cb =
1045 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1046 cb->mCall(cb->mContext, status);
1050 Callback::Callback<DoorLockClusterSetRfidResponseCallback> * cb =
1051 Callback::Callback<DoorLockClusterSetRfidResponseCallback>::FromCancelable(onSuccessCallback);
1052 cb->mCall(cb->mContext);
1056 bool emberAfDoorLockClusterSetUserTypeResponseCallback(uint8_t status)
1058 ChipLogProgress(Zcl, "SetUserTypeResponse:");
1061 GET_RESPONSE_CALLBACKS("DoorLockClusterSetUserTypeResponseCallback");
1063 if (status != EMBER_ZCL_STATUS_SUCCESS)
1065 Callback::Callback<DefaultFailureCallback> * cb =
1066 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1067 cb->mCall(cb->mContext, status);
1071 Callback::Callback<DoorLockClusterSetUserTypeResponseCallback> * cb =
1072 Callback::Callback<DoorLockClusterSetUserTypeResponseCallback>::FromCancelable(onSuccessCallback);
1073 cb->mCall(cb->mContext);
1077 bool emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(uint8_t status)
1079 ChipLogProgress(Zcl, "SetWeekdayScheduleResponse:");
1082 GET_RESPONSE_CALLBACKS("DoorLockClusterSetWeekdayScheduleResponseCallback");
1084 if (status != EMBER_ZCL_STATUS_SUCCESS)
1086 Callback::Callback<DefaultFailureCallback> * cb =
1087 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1088 cb->mCall(cb->mContext, status);
1092 Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback> * cb =
1093 Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
1094 cb->mCall(cb->mContext);
1098 bool emberAfDoorLockClusterSetYeardayScheduleResponseCallback(uint8_t status)
1100 ChipLogProgress(Zcl, "SetYeardayScheduleResponse:");
1103 GET_RESPONSE_CALLBACKS("DoorLockClusterSetYeardayScheduleResponseCallback");
1105 if (status != EMBER_ZCL_STATUS_SUCCESS)
1107 Callback::Callback<DefaultFailureCallback> * cb =
1108 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1109 cb->mCall(cb->mContext, status);
1113 Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback> * cb =
1114 Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
1115 cb->mCall(cb->mContext);
1119 bool emberAfDoorLockClusterUnlockDoorResponseCallback(uint8_t status)
1121 ChipLogProgress(Zcl, "UnlockDoorResponse:");
1124 GET_RESPONSE_CALLBACKS("DoorLockClusterUnlockDoorResponseCallback");
1126 if (status != EMBER_ZCL_STATUS_SUCCESS)
1128 Callback::Callback<DefaultFailureCallback> * cb =
1129 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1130 cb->mCall(cb->mContext, status);
1134 Callback::Callback<DoorLockClusterUnlockDoorResponseCallback> * cb =
1135 Callback::Callback<DoorLockClusterUnlockDoorResponseCallback>::FromCancelable(onSuccessCallback);
1136 cb->mCall(cb->mContext);
1140 bool emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(uint8_t status)
1142 ChipLogProgress(Zcl, "UnlockWithTimeoutResponse:");
1145 GET_RESPONSE_CALLBACKS("DoorLockClusterUnlockWithTimeoutResponseCallback");
1147 if (status != EMBER_ZCL_STATUS_SUCCESS)
1149 Callback::Callback<DefaultFailureCallback> * cb =
1150 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1151 cb->mCall(cb->mContext, status);
1155 Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback> * cb =
1156 Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback>::FromCancelable(onSuccessCallback);
1157 cb->mCall(cb->mContext);
1161 bool emberAfGeneralCommissioningClusterArmFailSafeResponseCallback(uint8_t errorCode, uint8_t * debugText)
1163 ChipLogProgress(Zcl, "ArmFailSafeResponse:");
1164 ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode);
1165 ChipLogProgress(Zcl, " debugText: %s", debugText);
1167 GET_RESPONSE_CALLBACKS("GeneralCommissioningClusterArmFailSafeResponseCallback");
1169 Callback::Callback<GeneralCommissioningClusterArmFailSafeResponseCallback> * cb =
1170 Callback::Callback<GeneralCommissioningClusterArmFailSafeResponseCallback>::FromCancelable(onSuccessCallback);
1171 cb->mCall(cb->mContext, errorCode, debugText);
1175 bool emberAfGeneralCommissioningClusterCommissioningCompleteResponseCallback(uint8_t errorCode, uint8_t * debugText)
1177 ChipLogProgress(Zcl, "CommissioningCompleteResponse:");
1178 ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode);
1179 ChipLogProgress(Zcl, " debugText: %s", debugText);
1181 GET_RESPONSE_CALLBACKS("GeneralCommissioningClusterCommissioningCompleteResponseCallback");
1183 Callback::Callback<GeneralCommissioningClusterCommissioningCompleteResponseCallback> * cb =
1184 Callback::Callback<GeneralCommissioningClusterCommissioningCompleteResponseCallback>::FromCancelable(onSuccessCallback);
1185 cb->mCall(cb->mContext, errorCode, debugText);
1189 bool emberAfGeneralCommissioningClusterSetFabricResponseCallback(uint8_t errorCode, uint8_t * debugText)
1191 ChipLogProgress(Zcl, "SetFabricResponse:");
1192 ChipLogProgress(Zcl, " errorCode: %" PRIu8 "", errorCode);
1193 ChipLogProgress(Zcl, " debugText: %s", debugText);
1195 GET_RESPONSE_CALLBACKS("GeneralCommissioningClusterSetFabricResponseCallback");
1197 Callback::Callback<GeneralCommissioningClusterSetFabricResponseCallback> * cb =
1198 Callback::Callback<GeneralCommissioningClusterSetFabricResponseCallback>::FromCancelable(onSuccessCallback);
1199 cb->mCall(cb->mContext, errorCode, debugText);
1203 bool emberAfGroupsClusterAddGroupResponseCallback(uint8_t status, uint16_t groupId)
1205 ChipLogProgress(Zcl, "AddGroupResponse:");
1207 ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
1209 GET_RESPONSE_CALLBACKS("GroupsClusterAddGroupResponseCallback");
1211 if (status != EMBER_ZCL_STATUS_SUCCESS)
1213 Callback::Callback<DefaultFailureCallback> * cb =
1214 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1215 cb->mCall(cb->mContext, status);
1219 Callback::Callback<GroupsClusterAddGroupResponseCallback> * cb =
1220 Callback::Callback<GroupsClusterAddGroupResponseCallback>::FromCancelable(onSuccessCallback);
1221 cb->mCall(cb->mContext, groupId);
1225 bool emberAfGroupsClusterGetGroupMembershipResponseCallback(uint8_t capacity, uint8_t groupCount,
1226 /* TYPE WARNING: array array defaults to */ uint8_t * groupList)
1228 ChipLogProgress(Zcl, "GetGroupMembershipResponse:");
1229 ChipLogProgress(Zcl, " capacity: %" PRIu8 "", capacity);
1230 ChipLogProgress(Zcl, " groupCount: %" PRIu8 "", groupCount);
1231 ChipLogProgress(Zcl, " groupList: %p", groupList);
1233 GET_RESPONSE_CALLBACKS("GroupsClusterGetGroupMembershipResponseCallback");
1235 Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback> * cb =
1236 Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback>::FromCancelable(onSuccessCallback);
1237 cb->mCall(cb->mContext, capacity, groupCount, groupList);
1241 bool emberAfGroupsClusterRemoveGroupResponseCallback(uint8_t status, uint16_t groupId)
1243 ChipLogProgress(Zcl, "RemoveGroupResponse:");
1245 ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
1247 GET_RESPONSE_CALLBACKS("GroupsClusterRemoveGroupResponseCallback");
1249 if (status != EMBER_ZCL_STATUS_SUCCESS)
1251 Callback::Callback<DefaultFailureCallback> * cb =
1252 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1253 cb->mCall(cb->mContext, status);
1257 Callback::Callback<GroupsClusterRemoveGroupResponseCallback> * cb =
1258 Callback::Callback<GroupsClusterRemoveGroupResponseCallback>::FromCancelable(onSuccessCallback);
1259 cb->mCall(cb->mContext, groupId);
1263 bool emberAfGroupsClusterViewGroupResponseCallback(uint8_t status, uint16_t groupId, uint8_t * groupName)
1265 ChipLogProgress(Zcl, "ViewGroupResponse:");
1267 ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
1268 ChipLogProgress(Zcl, " groupName: %s", groupName);
1270 GET_RESPONSE_CALLBACKS("GroupsClusterViewGroupResponseCallback");
1272 if (status != EMBER_ZCL_STATUS_SUCCESS)
1274 Callback::Callback<DefaultFailureCallback> * cb =
1275 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1276 cb->mCall(cb->mContext, status);
1280 Callback::Callback<GroupsClusterViewGroupResponseCallback> * cb =
1281 Callback::Callback<GroupsClusterViewGroupResponseCallback>::FromCancelable(onSuccessCallback);
1282 cb->mCall(cb->mContext, groupId, groupName);
1286 bool emberAfIdentifyClusterIdentifyQueryResponseCallback(uint16_t timeout)
1288 ChipLogProgress(Zcl, "IdentifyQueryResponse:");
1289 ChipLogProgress(Zcl, " timeout: %" PRIu16 "", timeout);
1291 GET_RESPONSE_CALLBACKS("IdentifyClusterIdentifyQueryResponseCallback");
1293 Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback> * cb =
1294 Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback>::FromCancelable(onSuccessCallback);
1295 cb->mCall(cb->mContext, timeout);
1299 bool emberAfScenesClusterAddSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId)
1301 ChipLogProgress(Zcl, "AddSceneResponse:");
1303 ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
1304 ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
1306 GET_RESPONSE_CALLBACKS("ScenesClusterAddSceneResponseCallback");
1308 if (status != EMBER_ZCL_STATUS_SUCCESS)
1310 Callback::Callback<DefaultFailureCallback> * cb =
1311 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1312 cb->mCall(cb->mContext, status);
1316 Callback::Callback<ScenesClusterAddSceneResponseCallback> * cb =
1317 Callback::Callback<ScenesClusterAddSceneResponseCallback>::FromCancelable(onSuccessCallback);
1318 cb->mCall(cb->mContext, groupId, sceneId);
1322 bool emberAfScenesClusterGetSceneMembershipResponseCallback(uint8_t status, uint8_t capacity, uint16_t groupId, uint8_t sceneCount,
1323 /* TYPE WARNING: array array defaults to */ uint8_t * sceneList)
1325 ChipLogProgress(Zcl, "GetSceneMembershipResponse:");
1327 ChipLogProgress(Zcl, " capacity: %" PRIu8 "", capacity);
1328 ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
1329 ChipLogProgress(Zcl, " sceneCount: %" PRIu8 "", sceneCount);
1330 ChipLogProgress(Zcl, " sceneList: %p", sceneList);
1332 GET_RESPONSE_CALLBACKS("ScenesClusterGetSceneMembershipResponseCallback");
1334 if (status != EMBER_ZCL_STATUS_SUCCESS)
1336 Callback::Callback<DefaultFailureCallback> * cb =
1337 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1338 cb->mCall(cb->mContext, status);
1342 Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback> * cb =
1343 Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback>::FromCancelable(onSuccessCallback);
1344 cb->mCall(cb->mContext, capacity, groupId, sceneCount, sceneList);
1348 bool emberAfScenesClusterRemoveAllScenesResponseCallback(uint8_t status, uint16_t groupId)
1350 ChipLogProgress(Zcl, "RemoveAllScenesResponse:");
1352 ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
1354 GET_RESPONSE_CALLBACKS("ScenesClusterRemoveAllScenesResponseCallback");
1356 if (status != EMBER_ZCL_STATUS_SUCCESS)
1358 Callback::Callback<DefaultFailureCallback> * cb =
1359 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1360 cb->mCall(cb->mContext, status);
1364 Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback> * cb =
1365 Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback>::FromCancelable(onSuccessCallback);
1366 cb->mCall(cb->mContext, groupId);
1370 bool emberAfScenesClusterRemoveSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId)
1372 ChipLogProgress(Zcl, "RemoveSceneResponse:");
1374 ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
1375 ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
1377 GET_RESPONSE_CALLBACKS("ScenesClusterRemoveSceneResponseCallback");
1379 if (status != EMBER_ZCL_STATUS_SUCCESS)
1381 Callback::Callback<DefaultFailureCallback> * cb =
1382 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1383 cb->mCall(cb->mContext, status);
1387 Callback::Callback<ScenesClusterRemoveSceneResponseCallback> * cb =
1388 Callback::Callback<ScenesClusterRemoveSceneResponseCallback>::FromCancelable(onSuccessCallback);
1389 cb->mCall(cb->mContext, groupId, sceneId);
1393 bool emberAfScenesClusterStoreSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId)
1395 ChipLogProgress(Zcl, "StoreSceneResponse:");
1397 ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
1398 ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
1400 GET_RESPONSE_CALLBACKS("ScenesClusterStoreSceneResponseCallback");
1402 if (status != EMBER_ZCL_STATUS_SUCCESS)
1404 Callback::Callback<DefaultFailureCallback> * cb =
1405 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1406 cb->mCall(cb->mContext, status);
1410 Callback::Callback<ScenesClusterStoreSceneResponseCallback> * cb =
1411 Callback::Callback<ScenesClusterStoreSceneResponseCallback>::FromCancelable(onSuccessCallback);
1412 cb->mCall(cb->mContext, groupId, sceneId);
1416 bool emberAfScenesClusterViewSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
1417 uint8_t * sceneName,
1418 /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets)
1420 ChipLogProgress(Zcl, "ViewSceneResponse:");
1422 ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
1423 ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
1424 ChipLogProgress(Zcl, " transitionTime: %" PRIu16 "", transitionTime);
1425 ChipLogProgress(Zcl, " sceneName: %s", sceneName);
1426 ChipLogProgress(Zcl, " extensionFieldSets: %p", extensionFieldSets);
1428 GET_RESPONSE_CALLBACKS("ScenesClusterViewSceneResponseCallback");
1430 if (status != EMBER_ZCL_STATUS_SUCCESS)
1432 Callback::Callback<DefaultFailureCallback> * cb =
1433 Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
1434 cb->mCall(cb->mContext, status);
1438 Callback::Callback<ScenesClusterViewSceneResponseCallback> * cb =
1439 Callback::Callback<ScenesClusterViewSceneResponseCallback>::FromCancelable(onSuccessCallback);
1440 cb->mCall(cb->mContext, groupId, sceneId, transitionTime, sceneName, extensionFieldSets);
1444 bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
1446 ChipLogProgress(Zcl, "emberAfReportAttributeCallback:");
1447 ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
1449 NodeId sourceId = emberAfCurrentCommand()->source;
1450 ChipLogProgress(Zcl, " Source NodeId: %" PRIu64, sourceId);
1452 EndpointId endpointId = emberAfCurrentCommand()->apsFrame->sourceEndpoint;
1453 ChipLogProgress(Zcl, " Source EndpointId: 0x%04x", endpointId);
1455 // TODO onFailureCallback is just here because of the CHECK_MESSAGE_LENGTH macro. It needs to be removed.
1456 Callback::Cancelable * onFailureCallback = nullptr;
1460 CHECK_MESSAGE_LENGTH(2);
1461 uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
1462 ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
1464 GET_REPORT_CALLBACK("emberAfReportAttributesCallback");
1466 CHECK_MESSAGE_LENGTH(1);
1467 uint8_t attributeType = chip::Encoding::Read8(message);
1468 ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
1470 switch (attributeType)
1472 case 0x00: // nodata / No data
1473 case 0x0A: // data24 / 24-bit data
1474 case 0x0C: // data40 / 40-bit data
1475 case 0x0D: // data48 / 48-bit data
1476 case 0x0E: // data56 / 56-bit data
1477 case 0x1A: // map24 / 24-bit bitmap
1478 case 0x1C: // map40 / 40-bit bitmap
1479 case 0x1D: // map48 / 48-bit bitmap
1480 case 0x1E: // map56 / 56-bit bitmap
1481 case 0x22: // uint24 / Unsigned 24-bit integer
1482 case 0x24: // uint40 / Unsigned 40-bit integer
1483 case 0x25: // uint48 / Unsigned 48-bit integer
1484 case 0x26: // uint56 / Unsigned 56-bit integer
1485 case 0x2A: // int24 / Signed 24-bit integer
1486 case 0x2C: // int40 / Signed 40-bit integer
1487 case 0x2D: // int48 / Signed 48-bit integer
1488 case 0x2E: // int56 / Signed 56-bit integer
1489 case 0x38: // semi / Semi-precision
1490 case 0x39: // single / Single precision
1491 case 0x3A: // double / Double precision
1492 case 0x41: // octstr / Octet string
1493 case 0x42: // string / Character string
1494 case 0x43: // octstr16 / Long octet string
1495 case 0x44: // string16 / Long character string
1496 case 0x48: // array / Array
1497 case 0x49: // struct / Structure
1498 case 0x50: // set / Set
1499 case 0x51: // bag / Bag
1500 case 0xE0: // ToD / Time of day
1502 ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
1506 case 0x08: // data8 / 8-bit data
1507 case 0x18: // map8 / 8-bit bitmap
1508 case 0x20: // uint8 / Unsigned 8-bit integer
1509 case 0x30: // enum8 / 8-bit enumeration
1511 CHECK_MESSAGE_LENGTH(1);
1512 uint8_t value = chip::Encoding::Read8(message);
1513 ChipLogProgress(Zcl, " value: 0x%02x", value);
1515 Callback::Callback<Int8uAttributeCallback> * cb =
1516 Callback::Callback<Int8uAttributeCallback>::FromCancelable(onReportCallback);
1517 cb->mCall(cb->mContext, value);
1521 case 0x09: // data16 / 16-bit data
1522 case 0x19: // map16 / 16-bit bitmap
1523 case 0x21: // uint16 / Unsigned 16-bit integer
1524 case 0x31: // enum16 / 16-bit enumeration
1525 case 0xE8: // clusterId / Cluster ID
1526 case 0xE9: // attribId / Attribute ID
1527 case 0xEA: // bacOID / BACnet OID
1528 case 0xF1: // key128 / 128-bit security key
1529 case 0xFF: // unk / Unknown
1531 CHECK_MESSAGE_LENGTH(2);
1532 uint16_t value = chip::Encoding::LittleEndian::Read16(message);
1533 ChipLogProgress(Zcl, " value: 0x%04x", value);
1535 Callback::Callback<Int16uAttributeCallback> * cb =
1536 Callback::Callback<Int16uAttributeCallback>::FromCancelable(onReportCallback);
1537 cb->mCall(cb->mContext, value);
1541 case 0x0B: // data32 / 32-bit data
1542 case 0x1B: // map32 / 32-bit bitmap
1543 case 0x23: // uint32 / Unsigned 32-bit integer
1544 case 0xE1: // date / Date
1545 case 0xE2: // UTC / UTCTime
1547 CHECK_MESSAGE_LENGTH(4);
1548 uint32_t value = chip::Encoding::LittleEndian::Read32(message);
1549 ChipLogProgress(Zcl, " value: 0x%08x", value);
1551 Callback::Callback<Int32uAttributeCallback> * cb =
1552 Callback::Callback<Int32uAttributeCallback>::FromCancelable(onReportCallback);
1553 cb->mCall(cb->mContext, value);
1557 case 0x0F: // data64 / 64-bit data
1558 case 0x1F: // map64 / 64-bit bitmap
1559 case 0x27: // uint64 / Unsigned 64-bit integer
1560 case 0xF0: // EUI64 / IEEE address
1562 CHECK_MESSAGE_LENGTH(8);
1563 uint64_t value = chip::Encoding::LittleEndian::Read64(message);
1564 ChipLogProgress(Zcl, " value: 0x%16x", value);
1566 Callback::Callback<Int64uAttributeCallback> * cb =
1567 Callback::Callback<Int64uAttributeCallback>::FromCancelable(onReportCallback);
1568 cb->mCall(cb->mContext, value);
1572 case 0x10: // bool / Boolean
1574 CHECK_MESSAGE_LENGTH(1);
1575 uint8_t value = chip::Encoding::Read8(message);
1576 ChipLogProgress(Zcl, " value: %d", value);
1578 Callback::Callback<BooleanAttributeCallback> * cb =
1579 Callback::Callback<BooleanAttributeCallback>::FromCancelable(onReportCallback);
1580 cb->mCall(cb->mContext, value);
1584 case 0x28: // int8 / Signed 8-bit integer
1586 CHECK_MESSAGE_LENGTH(1);
1587 int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
1588 ChipLogProgress(Zcl, " value: %" PRId8, value);
1590 Callback::Callback<Int8sAttributeCallback> * cb =
1591 Callback::Callback<Int8sAttributeCallback>::FromCancelable(onReportCallback);
1592 cb->mCall(cb->mContext, value);
1596 case 0x29: // int16 / Signed 16-bit integer
1598 CHECK_MESSAGE_LENGTH(2);
1599 int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
1600 ChipLogProgress(Zcl, " value: %" PRId16, value);
1602 Callback::Callback<Int16sAttributeCallback> * cb =
1603 Callback::Callback<Int16sAttributeCallback>::FromCancelable(onReportCallback);
1604 cb->mCall(cb->mContext, value);
1608 case 0x2B: // int32 / Signed 32-bit integer
1610 CHECK_MESSAGE_LENGTH(4);
1611 int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
1612 ChipLogProgress(Zcl, " value: %" PRId32, value);
1614 Callback::Callback<Int32sAttributeCallback> * cb =
1615 Callback::Callback<Int32sAttributeCallback>::FromCancelable(onReportCallback);
1616 cb->mCall(cb->mContext, value);
1620 case 0x2F: // int64 / Signed 64-bit integer
1622 CHECK_MESSAGE_LENGTH(8);
1623 int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
1624 ChipLogProgress(Zcl, " value: %" PRId64, value);
1626 Callback::Callback<Int64sAttributeCallback> * cb =
1627 Callback::Callback<Int64sAttributeCallback>::FromCancelable(onReportCallback);
1628 cb->mCall(cb->mContext, value);