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 #import <Foundation/Foundation.h>
22 #import "CHIPDevice.h"
23 #import "CHIPDevice_Internal.h"
25 #import "gen/CHIPClientCallbacks.h"
26 #import "gen/CHIPClustersObjc.h"
28 #include <controller/CHIPClusters.h>
29 #include <lib/support/Span.h>
31 using namespace ::chip;
33 class CHIPDefaultSuccessCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
35 CHIPDefaultSuccessCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
36 : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
42 ~CHIPDefaultSuccessCallbackBridge() {};
44 static void CallbackFn(void * context)
46 CHIPDefaultSuccessCallbackBridge * callback = reinterpret_cast<CHIPDefaultSuccessCallbackBridge *>(context);
47 if (callback && callback->mQueue) {
48 dispatch_async(callback->mQueue, ^{
49 callback->mHandler(nil, nil);
57 ResponseHandler mHandler;
58 dispatch_queue_t mQueue;
61 class CHIPDefaultFailureCallbackBridge : public Callback::Callback<DefaultFailureCallback> {
63 CHIPDefaultFailureCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
64 : Callback::Callback<DefaultFailureCallback>(CallbackFn, this)
70 ~CHIPDefaultFailureCallbackBridge() {};
72 static void CallbackFn(void * context, uint8_t status)
74 CHIPDefaultFailureCallbackBridge * callback = reinterpret_cast<CHIPDefaultFailureCallbackBridge *>(context);
75 if (callback && callback->mQueue) {
76 dispatch_async(callback->mQueue, ^{
77 NSError * error = [NSError errorWithDomain:CHIPErrorDomain
79 userInfo:@ { NSLocalizedDescriptionKey : @"" }];
80 callback->mHandler(error, nil);
88 ResponseHandler mHandler;
89 dispatch_queue_t mQueue;
92 class CHIPStringAttributeCallbackBridge : public Callback::Callback<StringAttributeCallback> {
94 CHIPStringAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool octetString, bool keepAlive = false)
95 : Callback::Callback<StringAttributeCallback>(CallbackFn, this)
98 , mOctetString(octetString)
99 , mKeepAlive(keepAlive)
103 ~CHIPStringAttributeCallbackBridge() {};
105 static void CallbackFn(void * context, chip::ByteSpan value)
107 CHIPStringAttributeCallbackBridge * callback = reinterpret_cast<CHIPStringAttributeCallbackBridge *>(context);
108 if (callback && callback->mQueue) {
109 dispatch_async(callback->mQueue, ^{
110 if (callback->mOctetString) {
111 NSData * data = [NSData dataWithBytes:value.data() length:value.size()];
112 callback->mHandler(nil, @ { @"value" : data });
114 NSString * str = [[NSString alloc] initWithBytes:value.data()
116 encoding:NSUTF8StringEncoding];
117 callback->mHandler(nil, @ { @"value" : str });
120 if (!callback->mKeepAlive) {
129 ResponseHandler mHandler;
130 dispatch_queue_t mQueue;
135 class CHIPBooleanAttributeCallbackBridge : public Callback::Callback<BooleanAttributeCallback> {
137 CHIPBooleanAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
138 : Callback::Callback<BooleanAttributeCallback>(CallbackFn, this)
141 , mKeepAlive(keepAlive)
145 ~CHIPBooleanAttributeCallbackBridge() {};
147 static void CallbackFn(void * context, bool value)
149 CHIPBooleanAttributeCallbackBridge * callback = reinterpret_cast<CHIPBooleanAttributeCallbackBridge *>(context);
150 if (callback && callback->mQueue) {
151 dispatch_async(callback->mQueue, ^{
152 callback->mHandler(nil, @ { @"value" : [NSNumber numberWithBool:value] });
153 if (!callback->mKeepAlive) {
162 ResponseHandler mHandler;
163 dispatch_queue_t mQueue;
167 class CHIPInt8uAttributeCallbackBridge : public Callback::Callback<Int8uAttributeCallback> {
169 CHIPInt8uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
170 : Callback::Callback<Int8uAttributeCallback>(CallbackFn, this)
173 , mKeepAlive(keepAlive)
177 ~CHIPInt8uAttributeCallbackBridge() {};
179 static void CallbackFn(void * context, uint8_t value)
181 CHIPInt8uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8uAttributeCallbackBridge *>(context);
182 if (callback && callback->mQueue) {
183 dispatch_async(callback->mQueue, ^{
184 callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedChar:value] });
185 if (!callback->mKeepAlive) {
194 ResponseHandler mHandler;
195 dispatch_queue_t mQueue;
199 class CHIPInt8sAttributeCallbackBridge : public Callback::Callback<Int8sAttributeCallback> {
201 CHIPInt8sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
202 : Callback::Callback<Int8sAttributeCallback>(CallbackFn, this)
205 , mKeepAlive(keepAlive)
209 ~CHIPInt8sAttributeCallbackBridge() {};
211 static void CallbackFn(void * context, int8_t value)
213 CHIPInt8sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8sAttributeCallbackBridge *>(context);
214 if (callback && callback->mQueue) {
215 dispatch_async(callback->mQueue, ^{
216 callback->mHandler(nil, @ { @"value" : [NSNumber numberWithChar:value] });
217 if (!callback->mKeepAlive) {
226 ResponseHandler mHandler;
227 dispatch_queue_t mQueue;
231 class CHIPInt16uAttributeCallbackBridge : public Callback::Callback<Int16uAttributeCallback> {
233 CHIPInt16uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
234 : Callback::Callback<Int16uAttributeCallback>(CallbackFn, this)
237 , mKeepAlive(keepAlive)
241 ~CHIPInt16uAttributeCallbackBridge() {};
243 static void CallbackFn(void * context, uint16_t value)
245 CHIPInt16uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16uAttributeCallbackBridge *>(context);
246 if (callback && callback->mQueue) {
247 dispatch_async(callback->mQueue, ^{
248 callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedShort:value] });
249 if (!callback->mKeepAlive) {
258 ResponseHandler mHandler;
259 dispatch_queue_t mQueue;
263 class CHIPInt32uAttributeCallbackBridge : public Callback::Callback<Int32uAttributeCallback> {
265 CHIPInt32uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
266 : Callback::Callback<Int32uAttributeCallback>(CallbackFn, this)
269 , mKeepAlive(keepAlive)
273 ~CHIPInt32uAttributeCallbackBridge() {};
275 static void CallbackFn(void * context, uint32_t value)
277 CHIPInt32uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt32uAttributeCallbackBridge *>(context);
278 if (callback && callback->mQueue) {
279 dispatch_async(callback->mQueue, ^{
280 callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedLong:value] });
281 if (!callback->mKeepAlive) {
290 ResponseHandler mHandler;
291 dispatch_queue_t mQueue;
295 class CHIPInt16sAttributeCallbackBridge : public Callback::Callback<Int16sAttributeCallback> {
297 CHIPInt16sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
298 : Callback::Callback<Int16sAttributeCallback>(CallbackFn, this)
301 , mKeepAlive(keepAlive)
305 ~CHIPInt16sAttributeCallbackBridge() {};
307 static void CallbackFn(void * context, int16_t value)
309 CHIPInt16sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16sAttributeCallbackBridge *>(context);
310 if (callback && callback->mQueue) {
311 dispatch_async(callback->mQueue, ^{
312 callback->mHandler(nil, @ { @"value" : [NSNumber numberWithShort:value] });
313 if (!callback->mKeepAlive) {
322 ResponseHandler mHandler;
323 dispatch_queue_t mQueue;
327 @interface CHIPCluster ()
328 @property (readonly, nonatomic) dispatch_queue_t callbackQueue;
329 - (Controller::ClusterBase *)getCluster;
332 @implementation CHIPCluster
333 - (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
335 if (self = [super init]) {
336 Controller::ClusterBase * cppCluster = [self getCluster];
337 if (cppCluster == nullptr) {
341 CHIP_ERROR err = cppCluster->Associate([device internalDevice], endpoint);
342 if (err != CHIP_NO_ERROR) {
346 _callbackQueue = queue;
351 - (Controller::ClusterBase *)getCluster
357 @interface CHIPBasic ()
358 @property (readonly) Controller::BasicCluster cppCluster;
361 @implementation CHIPBasic
363 - (Controller::ClusterBase *)getCluster
368 - (void)readAttributeInteractionModelVersion:(ResponseHandler)completionHandler
370 CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]);
372 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
376 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
379 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
383 CHIP_ERROR err = self.cppCluster.ReadAttributeInteractionModelVersion(onSuccess->Cancel(), onFailure->Cancel());
384 if (err != CHIP_NO_ERROR) {
387 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
391 - (void)readAttributeVendorName:(ResponseHandler)completionHandler
393 CHIPStringAttributeCallbackBridge * onSuccess
394 = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false);
396 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
400 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
403 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
407 CHIP_ERROR err = self.cppCluster.ReadAttributeVendorName(onSuccess->Cancel(), onFailure->Cancel());
408 if (err != CHIP_NO_ERROR) {
411 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
415 - (void)readAttributeVendorID:(ResponseHandler)completionHandler
417 CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]);
419 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
423 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
426 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
430 CHIP_ERROR err = self.cppCluster.ReadAttributeVendorID(onSuccess->Cancel(), onFailure->Cancel());
431 if (err != CHIP_NO_ERROR) {
434 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
438 - (void)readAttributeProductName:(ResponseHandler)completionHandler
440 CHIPStringAttributeCallbackBridge * onSuccess
441 = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false);
443 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
447 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
450 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
454 CHIP_ERROR err = self.cppCluster.ReadAttributeProductName(onSuccess->Cancel(), onFailure->Cancel());
455 if (err != CHIP_NO_ERROR) {
458 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
462 - (void)readAttributeProductID:(ResponseHandler)completionHandler
464 CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]);
466 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
470 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
473 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
477 CHIP_ERROR err = self.cppCluster.ReadAttributeProductID(onSuccess->Cancel(), onFailure->Cancel());
478 if (err != CHIP_NO_ERROR) {
481 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
485 - (void)readAttributeUserLabel:(ResponseHandler)completionHandler
487 CHIPStringAttributeCallbackBridge * onSuccess
488 = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false);
490 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
494 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
497 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
501 CHIP_ERROR err = self.cppCluster.ReadAttributeUserLabel(onSuccess->Cancel(), onFailure->Cancel());
502 if (err != CHIP_NO_ERROR) {
505 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
509 - (void)writeAttributeUserLabel:(NSString *)value completionHandler:(ResponseHandler)completionHandler
511 CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]);
513 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
517 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
520 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
524 NSData * data = [value dataUsingEncoding:NSUTF8StringEncoding];
525 CHIP_ERROR err = self.cppCluster.WriteAttributeUserLabel(
526 onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) data.bytes, data.length));
527 if (err != CHIP_NO_ERROR) {
530 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
534 - (void)readAttributeLocation:(ResponseHandler)completionHandler
536 CHIPStringAttributeCallbackBridge * onSuccess
537 = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false);
539 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
543 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
546 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
550 CHIP_ERROR err = self.cppCluster.ReadAttributeLocation(onSuccess->Cancel(), onFailure->Cancel());
551 if (err != CHIP_NO_ERROR) {
554 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
558 - (void)writeAttributeLocation:(NSString *)value completionHandler:(ResponseHandler)completionHandler
560 CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]);
562 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
566 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
569 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
573 NSData * data = [value dataUsingEncoding:NSUTF8StringEncoding];
574 CHIP_ERROR err = self.cppCluster.WriteAttributeLocation(
575 onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) data.bytes, data.length));
576 if (err != CHIP_NO_ERROR) {
579 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
583 - (void)readAttributeHardwareVersion:(ResponseHandler)completionHandler
585 CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]);
587 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
591 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
594 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
598 CHIP_ERROR err = self.cppCluster.ReadAttributeHardwareVersion(onSuccess->Cancel(), onFailure->Cancel());
599 if (err != CHIP_NO_ERROR) {
602 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
606 - (void)readAttributeHardwareVersionString:(ResponseHandler)completionHandler
608 CHIPStringAttributeCallbackBridge * onSuccess
609 = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false);
611 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
615 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
618 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
622 CHIP_ERROR err = self.cppCluster.ReadAttributeHardwareVersionString(onSuccess->Cancel(), onFailure->Cancel());
623 if (err != CHIP_NO_ERROR) {
626 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
630 - (void)readAttributeSoftwareVersion:(ResponseHandler)completionHandler
632 CHIPInt32uAttributeCallbackBridge * onSuccess = new CHIPInt32uAttributeCallbackBridge(completionHandler, [self callbackQueue]);
634 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
638 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
641 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
645 CHIP_ERROR err = self.cppCluster.ReadAttributeSoftwareVersion(onSuccess->Cancel(), onFailure->Cancel());
646 if (err != CHIP_NO_ERROR) {
649 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
653 - (void)readAttributeSoftwareVersionString:(ResponseHandler)completionHandler
655 CHIPStringAttributeCallbackBridge * onSuccess
656 = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false);
658 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
662 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
665 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
669 CHIP_ERROR err = self.cppCluster.ReadAttributeSoftwareVersionString(onSuccess->Cancel(), onFailure->Cancel());
670 if (err != CHIP_NO_ERROR) {
673 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
677 - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler
679 CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]);
681 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
685 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
688 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
692 CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
693 if (err != CHIP_NO_ERROR) {
696 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
702 @interface CHIPOnOff ()
703 @property (readonly) Controller::OnOffCluster cppCluster;
706 @implementation CHIPOnOff
708 - (Controller::ClusterBase *)getCluster
713 - (void)off:(ResponseHandler)completionHandler
715 CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]);
717 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
721 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
724 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
728 CHIP_ERROR err = self.cppCluster.Off(onSuccess->Cancel(), onFailure->Cancel());
729 if (err != CHIP_NO_ERROR) {
732 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
735 - (void)on:(ResponseHandler)completionHandler
737 CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]);
739 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
743 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
746 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
750 CHIP_ERROR err = self.cppCluster.On(onSuccess->Cancel(), onFailure->Cancel());
751 if (err != CHIP_NO_ERROR) {
754 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
757 - (void)toggle:(ResponseHandler)completionHandler
759 CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]);
761 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
765 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
768 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
772 CHIP_ERROR err = self.cppCluster.Toggle(onSuccess->Cancel(), onFailure->Cancel());
773 if (err != CHIP_NO_ERROR) {
776 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
780 - (void)readAttributeOnOff:(ResponseHandler)completionHandler
782 CHIPBooleanAttributeCallbackBridge * onSuccess
783 = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]);
785 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
789 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
792 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
796 CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel());
797 if (err != CHIP_NO_ERROR) {
800 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
804 - (void)configureAttributeOnOff:(uint16_t)minInterval
805 maxInterval:(uint16_t)maxInterval
806 completionHandler:(ResponseHandler)completionHandler
808 CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]);
810 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
814 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
817 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
821 CHIP_ERROR err = self.cppCluster.ConfigureAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval);
822 if (err != CHIP_NO_ERROR) {
825 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);
829 - (void)reportAttributeOnOff:(ResponseHandler)reportHandler
831 CHIPBooleanAttributeCallbackBridge * onReport
832 = new CHIPBooleanAttributeCallbackBridge(reportHandler, [self callbackQueue], true);
834 reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
838 CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(onReport->Cancel());
839 if (err != CHIP_NO_ERROR) {
841 reportHandler([CHIPError errorForCHIPErrorCode:err], nil);
845 - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler
847 CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]);
849 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
853 CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]);
856 completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil);
860 CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
861 if (err != CHIP_NO_ERROR) {
864 completionHandler([CHIPError errorForCHIPErrorCode:err], nil);